您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何編寫代碼實現(xiàn)花束效果”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何編寫代碼實現(xiàn)花束效果”吧!
BFS一般定義的:隊列q[]、判重數組st[];
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define x first #define y second using namespace std; const int N=210; typedef pair<int, int> PII; int T; //T組數據 int dist[N][N]; //判重數組 char g[N][N]; //儲存迷宮 int n,m; int bfs(PII start,PII end){ queue<PII> q; memset(dist,-1,sizeof dist); dist[start.x][start.y]=0; q.push(start); int dx[4] = {-1,0,1,0},dy[4] = {0,1,0,-1}; while(q.size()){ //自動推斷類型 auto t=q.front(); //出隊 q.pop(); for(int i=0;i<4;i++){ int x=t.x+dx[i]; int y=t.y+dy[i]; if(x<0 || x>=n || y<0 || y>=m) continue; //如果出界 if(g[x][y]=='#') continue; //如果碰到墻 if(dist[x][y] != -1) continue; //如果之前遍歷過 dist[x][y]=dist[t.x][t.y]+1; //如果到終點了 if(end == make_pair(x,y)) return dist[x][y]; q.push({x,y}); } } return -1; } int main(){ cin>>T; while(T--){ cin>>n>>m; for(int i = 0;i < n;i++){ scanf("%s",&g[i]); } //設置起點和終點 PII start,end; for(int i=0;i<n;i++) for(int j=0;j<m;j++){ if(g[i][j]=='S') start={i,j}; if(g[i][j]=='E') end={i,j}; } int distance=bfs(start,end); if(distance==-1) cout<<"oop!"<<endl; else printf("%d\n",distance); } return 0; }
感謝各位的閱讀,以上就是“如何編寫代碼實現(xiàn)花束效果”的內容了,經過本文的學習后,相信大家對如何編寫代碼實現(xiàn)花束效果這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。