炸彈人 DFS和BFS

2022-07-01 06:33:12 字數 1402 閱讀 8596

做出二維陣列: # 表示牆壁; g表示敵人 ;. 表示可以安放炸彈的位置;

問題關鍵:不是所有地點你都可以達到,注意路徑問題(比如說(1,11)點是消滅敵人最多的點,但是不一定是炸彈可放置的點)

;**如下(示例):

void dfs(int x,int y)

,,,};

for(i=0;i<4;i++)

}return;

}

**如下(示例):

8.14再次更新(c++完整版)

#include using namespace std;

int n, m, book[105][105], ans = 0;

char s[105][105];

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

struct nodenode;

int souzhadan(int x, int y)

i = x, j = y;

while(i < n - 1)

i = x, j = y;

while(j > 0)

i = x, j = y;

while(j < m - 1)

return cnt;

}int judge(int x, int y)

void bfs(int x, int y)

} }}/*

13 13

#############

#gg.ggg#ggg.#

###.#g#g#g#g#

#.......#..g#

#g#.###.#g#g#

#gg.ggg.#.gg#

#g#.#g#.#.###

##g...g....##

#g#.#g###.#g#

#...g#ggg.gg#

#g#.#g#g#.#g#

#gg.ggg#g.gg#

#############

3 2*/

int main()

} cin >> x >> y;

bfs(x,y);

cout << ans << endl;

return 0;

}

# 總結

1 : ==盡可能把所有變數都定義為全域性變數,尤其是記憶體大的陣列變數,因為全域性變數錯太多次了==

2 : ==完成一次遍歷搜尋千萬不要忘記入隊 book[ ][ ]=1,bfs入隊後往往還有類似操作 

node.x = newx, node.y = newy;
3 : ==必須學會除錯,找到錯誤的位置,省的一錯誤 愣住半天,找不到錯==

BFS深度優先搜尋 炸彈人

題面 乙個人在乙個座標放炸彈,請問可以可以殺死的敵人數目最大是,並且輸出該點的座標 g代表敵人 代表該位置可以走 代表該位置存在障礙物 並且防止炸彈的蔓13 13 3 3 gg.ggg ggg.g g g g g g g g gg.ggg.gg g g g g g g g g ggg.gg g g ...

DFS BFS(解決炸彈人)

問題省略 dfs解決炸彈人 include includeusing namespace std char a 20 21 用來儲存地圖 int book 20 20 maxn,mx,my,n,m int getnum int i,int j x i,y j while a x y x i,y j ...

炸彈人 模擬,列舉

題目描述 id 12033 炸彈人標籤 模擬詳情 小哼最近愛上了 炸彈人 遊戲。你還記得在小霸王遊戲機上的炸彈人嗎?用放置炸彈的方法來消滅敵人。需將畫面上的敵人全部消滅後,並找到隱藏在牆裡的暗門才能過關。現在有乙個特殊的關卡如下。你只有一枚炸彈,但是這枚炸彈威力超強 殺傷距離超長,可以消滅殺傷範圍內...