HDU 1226 超級密碼 bfs好題

2021-06-29 03:30:20 字數 797 閱讀 2036

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花了乙個星期的時間終於找到了傳說中的寶藏,寶藏被放在乙個房間裡,房間的門用密碼鎖起來了,在...