日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

编程题走迷宫_C++程序算法题----迷宫(一)

發布時間:2024/7/19 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程题走迷宫_C++程序算法题----迷宫(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:

一天蒜頭君掉進了一個迷宮里面,蒜頭君想逃出去,可憐的蒜頭君連迷宮是否有能逃出去的路都不知道。看在蒜頭君這么可憐的份上,就請聰明的你告訴蒜頭君是否有可以逃出去的路。

輸入格式

第一行輸入兩個整數 n和 m,表示這是一個 n×m的迷宮。接下來的輸入一個 n行 m列的迷宮。其中 'S' 表示蒜頭君的位置,'*'表示墻,蒜頭君無法通過,'.'表示路,蒜頭君可以通過'.'移動,'T'表示迷宮的出口(蒜頭君每次只能移動到四個與他相鄰的位置——上,下,左,右)。

輸出格式

輸出一個字符串,如果蒜頭君可以逃出迷宮輸出"yes",否則輸出"no"。

數據范圍

1≤n,m≤10。

Sample Input

3 4

S**.

..*.

***T

Sample Output

no

Sample Input 2

3 4

S**.

....

***T

Sample Output 2

yes

運用深度搜索。找到人的位置,因為只能從上下左右四個方向出發,所以每到一個點,先判斷是否是終點,然后考慮這個點是否是在該棋盤上,是否能走,是否已經走過。最后如果能出去,則輸出yes,否則輸出no。

代碼

#include

#include

#include

int n,m;

char road[15][15]; //棋盤

bool is_run[15][15]={false}; //是否已經走過

int dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}}; // 分別代表四個方向

bool out = false; //是否可以出去

using namespace std;

// 因為要從4個方向出發,所以需要判斷下一個點是否在地圖里

bool in_road(int x,int y){

return (0<=x&&x

}

void DFS(int x,int y){

if(road[x][y]=='T'){

//找到出口

out = true;

return;

}

if(!in_road(x,y)||road[x][y]=='*'||is_run[x][y]){

return;

}

is_run[x][y] = true;

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

int tx = x+dir[i][0];

int ty = y+dir[i][1];

DFS(tx,ty);

}

return;

}

int main(){

int x,y;

cin>>n>>m;

for(int i=0;i

for(int j=0;j

cin>>road[i][j];

if(road[i][j]=='S'){

x = i;

y = j;

}

}

}

DFS(x,y);

if(out){

cout<

}else{

cout<

}

return 0;

}

運行結果:

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的编程题走迷宫_C++程序算法题----迷宫(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。