啊哈演算法搜尋應用之再解炸彈人 DFS與BFS

2021-07-23 09:14:35 字數 1323 閱讀 1573

//廣搜

#include #include #include struct node;

struct node queue[20];//佇列實現bfs

int head=0;

int tail=0;

char map[21][21];//存圖

int book[21][21];//標記走過的點

int n;//圖的規模

int max=-1;//消滅敵人最多的數量

int xmax,ymax;//消滅敵人最多數量的座標

int next[4][2]=,,,};

int getsum(int x,int y)//得到此點放炸彈消滅的敵人數

//向下統計

i=x+1;

j=y;

while(map[i][j]!='#')

//向左統計

i=x;

j=y-1;

while(map[i][j]!='#')

//向右統計

i=x;

j=y+1;

while(map[i][j]!='#')

return sum;

}void bfs(int x,int y)

tail++;}}

head++;

bfs(queue[head].x,queue[head].y);

}int main()

;char map[21][21];//存圖

int book[21][21];//標記走過的點

int n;//圖的規模

int next[4][2]=,,,};

int max=-1;//消滅敵人最多的數量

int xmax,ymax;//消滅敵人最多數量的座標

int getsum(int x,int y)//得到此點放炸彈消滅的敵人數

//向下統計

i=x+1;

j=y;

while(map[i][j]!='#')

//向左統計

i=x;

j=y-1;

while(map[i][j]!='#')

//向右統計

i=x;

j=y+1;

while(map[i][j]!='#')

return sum;

}void dfs(int x,int y)

dfs(xnext,ynext);

//book[xnext][ynext]=0; //深搜不一定有此句,根據需求定}}

return;

}int main()

《啊哈!演算法》第4章 萬能的搜尋

第5節 寶島探險 利用廣度優先搜尋實現 其中可以不用開闢visit變數,直接用將本身的值改為 1,然後判斷即可 注意輸入資料時周圍加了一層 1,作為邊界 廣度優先搜尋 利用深度優先搜尋實現,注意下面的方法是將搜尋到的點著成 1的顏色 深度優先搜尋 注意如果n和m比較大的話,建議用廣度優先搜尋,由於深...

DFS搜尋基本模型(具體模擬過程見《啊哈演算法》)

問題 輸入乙個數字n,輸出1 n的全排列。思路 如果n比較小的話 像1,2,3這種 直接用for迴圈就好了,但是迴圈層越多,時間複雜度也越大,所以這個時候輸入的n大了肯定超時。用新的方法 dfs 比如要輸出3的全排列 你現在手裡有3張撲克牌,分別編號1 2 3,要將這三張撲克牌分別放到三個箱子裡,箱...

貪心演算法應用之渴嬰問題

渴嬰問題 有乙個非常渴的 聰明的小嬰兒,她可能得到的東西包括一杯水 一桶牛奶 多罐不同種類的果汁 許多不同的裝在瓶子或罐子中的蘇打水,即嬰兒可得到n種不同的飲料。根據以前關於這n種飲料的不同體驗,此嬰兒知道這其中某些飲料更合自己的胃口,因此,嬰兒採取如下方法為每一種飲料賦予乙個滿意度值 飲用1盎司第...