描述:根据题目所给公式进行计算就可以了,完全不需要用到哈希判重
#include <cstdio>
#include <cstring>
char str[210];
int flag,count[15];
void bfs()
{
int len=strlen(str),n=0,max=0;
for(int i=0; i<len; i++)
if(str[i]<='z'&&str[i]>='a')
{
int j,c(0);
for(j=i; j<len; 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<n-1; i++)
for(int j=i+1; j<n; 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;
}
188 - Perfect Hash
最新推荐文章于 2020-04-08 21:00:23 发布