程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 188 - Perfect Hash

188 - Perfect Hash

編輯:C++入門知識

[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;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved