ps:不得不說自己太菜了,dfs和bfs的模板題都搞了好幾個小時
有乙個 10 x 10 的迷宮,起點是『s』,終點是『e』,牆是『#』,道路是空格。乙個機械人從起點走到終點。當機械人走到乙個通道塊,前面已經沒有路可走時,它會轉向到當前面向的右手方向繼續走。如果機械人能夠過,則留下足跡『*』,如果走不通,則留下標記『!』。
下面給出書中的演算法,請你模擬機械人的走法輸出最終的狀態。
乙個 10 x 10 的二維字元陣列。
機械人走過的路徑狀態。
題解:直接利用dfs演算法即可,開始想著在主函式中輸出,但是沒考慮到在回溯的過程中將原來走過的全都變為了『!』,(哇,心態**),太菜了,下面就是**:
#include
using
namespace std;
//int dir[4][2]= ,,,};
int dir[4]
[2]=
,,,}
;//方向
int vis[15]
[15];
//判斷是否走過
char s[15]
[15];
int x1,x2,y,y2;
void
dfs(
int x,
int y)
}for
(int k=
0; k<
4; k++)}
}int
main()
if(s[i]
[j]==
'e')
}getchar()
;}//for(int i=0;i<10;i++)
// printf("%s\n",s[i]);
//for(int i=1;i<=10;i++)
//printf("%s",s[i]);
s[x1]
[y]=
'*';
dfs(x1,y)
;return0;
}
小明置身於乙個迷宮,請你幫小明找出從起點到終點的最短路程。
小明只能向上下左右四個方向移動。
輸入包含多組測試資料。輸入的第一行是乙個整數t,表示有t組測試資料。
每組輸入的第一行是兩個整數n和m(1<=n,m<=100)。
接下來n行,每行輸入m個字元,每個字元表示迷宮中的乙個小方格。
字元的含義如下:
『s』:起點
『e』:終點
『-』:空地,可以通過
『#』:障礙,無法通過
輸入資料保證有且僅有乙個起點和終點。
對於每組輸入,輸出從起點到終點的最短路程,如果不存在從起點到終點的路,則輸出-1。
題解:不知道為什麼後面**一直wa,但是感覺並沒有什麼錯誤啊,後面和大佬的**對比,也覺得一模一樣,但是就是wa,心態崩了
#include
//#define n 110
int vis[
110]
[110];
char str[
110]
[110];
int n,m;
int dir[4]
[2]=
,,,}
;int sx,sy,ex,ey;
int t;
int tx,ty;
int front,rear,flag;
int i,j;
struct note
;struct note que[
110*
110]
;void
bfs()if
(tx == ex&&ty == ey)}if
(flag ==1)
front++;}
if(flag ==0)
printf
("-1\n");
else
printf
("%d\n"
,que[rear-1]
.s);
}int
main()
if(str[i]
[j]==
'e')
}getchar()
;}bfs();
}return0;
}
還是做題做少了,最近得好好做做資料結構相關題了!!!! 迷宮問題 dfs bfs
從迷宮入口點 1,1 出發,出口點 m,n 1.求所有路徑條數 2.求最短路徑條數 3.輸出一條最短路徑 題解 向四周搜尋,記下所有一步能到達的座標點 然後依次再從這些點出發,再記下所有一步能到達的座標點,依此類推,直到到達迷宮的出口點 m,n 為止,然後從出口點沿搜尋路徑回溯直至入口。這樣就找到了...
dfs bfs 逃離迷宮
給定乙個m n m行,n列 的迷宮,迷宮中有兩個位置,gloria想從迷宮的乙個位置走到另外乙個位置,當然迷宮中有些地方是空地,gloria可以穿越,有些地方是障礙,她必須繞行,從迷宮的乙個位置,只能走到與它相鄰的4個位置中,當然在行走過程中,gloria不能走到迷宮外面去。令人頭痛的是,glori...
dfs bfs迷宮集合
師兄在藍橋杯培訓的時候講過dfs,但是但是後來又忘了,然後又做,現在又忘 希望師兄不要打我 問題描述 學霸搶走了大家的作業,班長為了幫同學們找回作業,決定去找學霸決鬥。但學霸為了不要別人打擾,住在乙個城堡裡,城堡外面是乙個二維的格仔迷宮,要進城堡必須得先通過迷宮。因為班長還有妹子要陪,磨刀不誤砍柴功...