当前位置:编程学习 > C/C++ >>

188 - Perfect Hash

[cpp]  
描述:根据题目所给公式进行计算就可以了,完全不需要用到哈希判重  
#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;  
}  
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,