188 - Perfect Hash

2014-11-24 08:40:46 · 作者: · 浏览: 3
[cpp]
描述:根据题目所给公式进行计算就可以了,完全不需要用到哈希判重
#include
#include
char str[210];
int flag,count[15];
void bfs()
{
int len=strlen(str),n=0,max=0;
for(int i=0; i
if(str[i]<='z'&&str[i]>='a')
{
int j,c(0);
for(j=i; j
if(str[j]>='a'&&str[j]<='z') c=c*32+str[j]-'a'+1;
else break;
i=j;
if(!n||(n&&max>c)) max=c;
count[n++]=c;
}
while(1)
{
flag=0;
for(int i=0; i
for(int j=i+1; j
{
int modi=(max/count[i])%n;
int modj=(max/count[j])%n;
if(modi==modj)
{
modi=(max/count[i]+1)*count[i];
modj=(max/count[j]+1)*count[j];
max=modi > modj modj : modi;
flag=1;
}
}
if(!flag)
{
printf("%d\n\n",max);
return;
}
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("a.txt", "r", stdin);
#endif
while(gets(str))
{
puts(str);
bfs();
}
return 0;
}