KuangBin 專題一 簡單搜尋 Pots

2021-10-09 21:06:44 字數 1205 閱讀 5881

#include

#include

#include

#include

#include

using

namespace std;

//cubagea是第乙個瓶子的容量

//cubageb是第二個瓶子的容量

//stdc是要達到的容量

int used[

105]

[105

],cubagea,cubageb,stdc;

//用於儲存兩個瓶子,步驟,和每一步的操作

struct node

;void

bfs(

)//把a倒入b中的情況

if(cur.a!=0)

else

tmp.step=cur.step+1;

tmp.path=cur.path;

tmp.path.

push_back

("pour(1,2)");

if(!used[tmp.a]

[tmp.b])}

//b倒入a的情況

if(cur.b!=0)

else

tmp.step=cur.step+1;

tmp.path=cur.path;

tmp.path.

push_back

("pour(2,1)");

if(!used[tmp.a]

[tmp.b])}

//清空a

if(cur.a!=0)

}//清空b

if(cur.b!=0)

}//填滿a

if(cur.a!=cubagea)

}//填滿b

if(cur.b!=cubageb)}}

//若佇列中沒有出現需要的情況則輸出impossible

printf

("impossible\n");

}int

main()

這是一道bfs其中每次都要進行對前節點進行處理,即倒掉a,倒掉b,倒滿a,倒滿b,a倒到b,b倒到a六種操作。操作完以後看看當前狀態(即a,b的當前儲存量是否出現過)符合條件就壓入佇列,否則就不進行處理。直到a,b中有乙個瓶子儲存量為stdc為止。當處理完佇列以後還沒有出發特殊條件,則輸出impossible。

kuangbin專題一 簡單搜尋

poj 1426 找出乙個由1和0組成的十進位制數m滿足m為n的倍數。有兩種做法,一種是bfs從低位數往高位數搜,另一種是用二叉樹陣列的結構存每次的求出來的餘數,當餘數為0時返回下標,然後根據下標求出其對應的數。1.bfs include includeusing namespace std con...

kuangbin專題一簡單搜尋總結

e find the multiple 題意 找乙個能整除n的數m,對m的要求是只有0和1組成。n不超過200,m長度不超過100.思路 很多人都寫了乙個假演算法,就是在unsigned long long 的範圍裡面找就行了,雖然也a了,但博主想在這裡提一下正確的思路。首先用到了同餘定理 即以任意...

kuangbin專題一 簡單搜尋 (完整)

1.poj 1321 棋盤排列 類似八皇后 poj 1321 棋盤排列 類似八皇后的排列搜尋。include include include using namespace std typedef long long ll int dp 11 11 char mp 11 11 int col 11 ...