wa了n發。。之前一直re。找了好久才發現是算c進製化十進位製模n時,溢位了。所以得到的餘數是負數,然後對陣列就訪問了非法位置。
**如下。
#include
#include
#include
#include
#include
using
namespace
std;
const
int maxn=555;
struct key;
int n,m,c;
int ff[22];
bool mod[5555];//因為密碼是5000的倍數並且要最短,所以只需考慮對5000的餘數.並且第一次出現該該餘數就是最短的答案.
int mm(key s)
/*原寫法
int quick(int x)
return ans%n;
}int mm(key s)
bool bfs()
while(!q.empty())
for(int i=0;iint x=mm(ki);
if(ki.len<500&&!mod[x])}}
return
false;
}int main()
sort(ff,ff+m);
if(n==0)
else
if(!bfs())
printf("give me the bomb please\n");
}return
0;}
hdu1226 超級密碼 bfs
思路 因為n 5000 所以方案個數也只有5000個,可以用bfs來做。一開始挺糾結怎麼做,但是上網一看別的大牛的 一下子就恍然大悟豁然開朗,如同撥開雲霧見青天 o include include include include using namespace std const int maxn ...
HDU1226 超級密碼 BFS
由於n最大也只有5000,則對於列舉的密碼s,s n的狀態也只有5000種。所以每乙個列舉到的狀態,開兩個內容,乙個表示密碼的字串,乙個表示模n的餘數,當餘數為0的時候,說明找到密碼。include include include include include using namespace st...
hdu 1226 超級密碼 bfs
c 超級密碼 time limit 10000msmemory limit 32768kb64bit io format i64d i64u submit status description ignatius花了乙個星期的時間終於找到了傳說中的寶藏,寶藏被放在乙個房間裡,房間的門用密碼鎖起來了,在...