DFS BFS(解決炸彈人)

2021-07-30 23:51:14 字數 1820 閱讀 2810

問題省略……

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;

while(a[x][y]!='#')

x=i,y=j;

while(a[x][y]!='#')

}void dfs(int x,int y) ,//向右

,//向下

,//向左

};//向上

int sum=getnum(x,y);

if(sum>maxn)

int tx,ty;

for(int k=0;k<=3;k++)

} return ;

}int main()

bfs解決炸彈人

#include#includeusing namespace std;

struct note ;

char a[20][20];//用來儲存地圖

int getnum(int i,int j)

x=i,y=j;

while(a[x][y]!='#')

x=i,y=j;

while(a[x][y]!='#')

x=i,y=j;

while(a[x][y]!='#')

return sum;}

int main() ;

//定義乙個用於表示走的方向的陣列

int next[4][2]=,//向右

,//向下

,//向左

};//向上

int n,m,startx,starty;

cin>>n>>m>>startx>>starty;

for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

cin>>a[i][j];

//佇列初始化

int head=1;

int tail=1;

//往佇列插入迷宮入口座標

que[tail].x=startx;

que[tail].y=starty;

tail++;

book[startx][starty]=1;

int max=getnum(startx,starty); //當前點可以消滅的敵人數

int mx=startx; //當前點的橫座標

int my=starty; //當前點的縱座標

int tx,ty;

while(headn-1 || ty<0 || ty>m-1)

continue;

//判斷是否為障礙物 或者已經在路徑中

if(a[tx][ty]=='.' && book[tx][ty]==0)

}} head++;//此地方不能忘記,當乙個點拓展結束,head++才能對後面的點再進行拓展

} printf("%d %d %d",mx,my,max);

getchar();getchar();

return 0;

}

節選自啊哈磊的《啊哈!演算法》

炸彈人 模擬,列舉

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

206 12 15炸彈人開發日誌

目前的正在執行的計畫 1.支援物品組,以實現乙個物品能夠占用多個方格 2.精靈編輯 3.物品編輯 4.讀寫地圖 5.設定玩家起始位置 矩形邊框顏色 字型顏色 字型大小 6.設定背景與碰撞物 7.設定獎品 資料 放棄精靈編輯器,與物品編輯器是因為這兩樣東西雖然是小東西,卻占用了將近乙個星期時間。而我發...

2007 01 24炸彈人開發日誌

解決了兩個關於移動與碰撞的bug 1 bug描述 當炸彈在接近牆的時候,人就不能從接近牆的那一邊把炸彈踢走 原因 人物在產生碰撞的時候,沒有移動到整數格仔內 在炸彈碰撞檢測的時候加了邊介審查,導致直接在邊介附近停止,因為移動的碰撞檢測 是一但發現則立即停止的嚴格檢查。2 bug描述 人物在產生平移效...