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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

POJ - 1475 Pushing Boxes(bfs套bfs)

發布時間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 POJ - 1475 Pushing Boxes(bfs套bfs) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:要求模擬推箱子游戲的過程,輸出最優路徑,最優路徑要求箱子移動的次數最少,次為人移動的次數最少

題目分析:這個題可以簡化成兩個相互依附的東西同時走迷宮,因為首先要求箱子移動的次數最少,所以我們在最外層設置一層bfs用來搜索箱子的最優解,其次是要求人的移動次數最少,我們可以在內層設置一個BFS用來搜索人的最優解,這樣的時間復雜度是n*n*m*m,題目給出的n和m最大為20,20的四次方也才160000,內存和時間都合適

注意一下,這個題目沒有那么多坑,每個地圖中只有一個箱子,一個起點,一個終點,我看網上有人嵌套bfs時用了一個四位vis來記錄狀態,我感覺沒那個必要,就只是開了兩個二維的vis和book分別記錄箱子的狀態和人的狀態,可以達到同樣的效果,其次就是需要注意一下,當進入人的BFS時,箱子所在的那一格需要視為墻,我們只需要在搜索之前將箱子所在的那一格的狀態設置為true即可,還有就是路徑記錄問題,因為數據量比較小,我直接用string暴力傳遞的,因為模擬鏈表真的有點燒腦子嗷嗷嗷,目前就被一個題目卡了內存,其他的題目還是可以直接用string或vector暴力傳遞滴

思路清晰點寫一遍能調過樣例肯定就沒問題了,上代碼吧:

#include<iostream> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=25;const int b[4][2]={0,1,0,-1,1,0,-1,0};const char man[4]={'e','w','s','n'};const char box[4]={'E','W','S','N'};int n,m;string ans,str;char maze[N][N];bool vis[N][N],book[N][N];bool check(int x,int y) {if(x<0||y<0||x>=n||y>=m)return false;if(maze[x][y]=='#')return false;return true; }struct Node {int x,y,bx,by;string path;Node(int X,int Y,int BX,int BY,string PATH){x=X;y=Y;bx=BX;by=BY;path=PATH;}Node(){} };bool BFS(int x,int y,int xxx,int yyy,int px,int py)//搜索人的路徑,簡單bfs //上述六個參數分別代表:起點x,起點y,終點x,終點y,箱子x,箱子y {memset(book,false,sizeof(book));//記得初始化queue<Node>q;q.push(Node(x,y,0,0,""));book[x][y]=true;book[px][py]=true;//記得將箱子坐標的狀態設為truewhile(!q.empty()){Node cur=q.front();q.pop();if(cur.x==xxx&&cur.y==yyy){str=cur.path;return true;}for(int i=0;i<4;i++){int xx=cur.x+b[i][0];int yy=cur.y+b[i][1];if(!check(xx,yy))continue;if(book[xx][yy])continue;book[xx][yy]=true;q.push(Node(xx,yy,0,0,cur.path+man[i]));}}return false; }bool bfs()//搜索箱子的路徑,稍微多了幾個條件的bfs {memset(vis,false,sizeof(vis));//記得初始化Node temp;temp.path="";for(int i=0;i<n;i++)for(int j=0;j<m;j++)if(maze[i][j]=='B'){temp.bx=i;temp.by=j;}else if(maze[i][j]=='S'){temp.x=i;temp.y=j;}queue<Node>q;q.push(temp);while(!q.empty()){Node cur=q.front();q.pop();if(maze[cur.bx][cur.by]=='T'){ans=cur.path;return true;}for(int i=0;i<4;i++)//模擬推箱子的過程{int xx=cur.bx+b[i][0];//計算箱子應到達的位置int yy=cur.by+b[i][1];if(!check(xx,yy))//檢查坐標合理性continue;int xxx=cur.bx-b[i][0];//計算人應到達的位置int yyy=cur.by-b[i][1];if(!check(xxx,yyy))//檢查坐標合理性continue;if(vis[xx][yy])continue;if(!BFS(cur.x,cur.y,xxx,yyy,cur.bx,cur.by))//計算人能否到達continue;vis[xx][yy]=true;q.push(Node(cur.bx,cur.by,xx,yy,cur.path+str+box[i]));//若能到達更新狀態}}return false; }int main() { // freopen("input.txt","r",stdin);int kase=0;while(scanf("%d%d",&n,&m)!=EOF&&n+m){for(int i=0;i<n;i++)scanf("%s",maze[i]);printf("Maze #%d\n",++kase);if(bfs())cout<<ans<<endl<<endl;elsecout<<"Impossible."<<endl<<endl;}return 0; }

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的POJ - 1475 Pushing Boxes(bfs套bfs)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲欧美中文日韩在线v日本 | 青青青免费视频观看在线 | 黄色片在线免费观看视频 | 手机av在线不卡 | 日韩成人av片| 亚洲av综合色区无码一二三区 | 香蕉福利| 国产成人亚洲综合a∨婷婷 台湾a级片 | 视频一区日韩 | 欧美日韩成人一区 | 日韩精品短片 | 夜夜欢天天干 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 亚洲m码 欧洲s码sss222 | 一卡二卡国产 | 美日韩成人 | 国产成人精品一区二 | 中文字字幕一区二区三区四区五区 | 九九综合九九综合 | av网址免费在线观看 | 99热手机在线观看 | 一级在线播放 | 婷婷色影院 | 98国产视频 | 国产乱论视频 | 久久婷婷一区二区 | 一区二区黄色 | 久久免费视频播放 | 成人免费福利 | 好妞色妞国产在线视频 | 日韩欧美在线视频观看 | 激情av综合 | 伊人365 | 曰本黄色片| 欧美一区二区三区大屁股撅起来 | 日韩欧美国产亚洲 | 中文在线视频 | 欧美色综合天天久久综合精品 | 成人中文视频 | 色婷婷久久久亚洲一区二区三区 | 中文字幕25页 | 欧美大片一级 | 精品免费视频 | 蜜臀av在线免费观看 | 欧美混交群体交 | 高清国产午夜精品久久久久久 | av图片在线观看 | 国产精品久久久久毛片 | 亚洲の无码国产の无码步美 | 免费观看a毛片 | 热久久中文字幕 | 国产在线欧美日韩 | 天天射,天天干 | 成 人片 黄 色 大 片 | 欧美成人一区二区三区四区 | 91美女片黄在线观看 | 成人精品一区二区三区在线 | 26uuu亚洲国产精品 | 久久久网 | 性色av无码久久一区二区三区 | 午夜精品久久久久久久99热浪潮 | 久久精品国产亚洲AV成人雅虎 | 玖操| 日韩在线播放一区 | 香蕉久久精品 | 美女主播福利视频 | 日大逼| 免费看一级黄色片 | 久久福利免费视频 | www.777色| 黄色污污网站在线观看 | 日韩在线一级 | 欧美日韩一区二区三区在线电影 | 亚洲精品国产suv | 亚洲一区二区三 | 亚洲tv在线观看 | 深夜毛片| 欧美亚洲另类在线 | 国产精品视频网站 | 国语播放老妇呻吟对白 | 动漫美女靠逼 | 欧美a级成人淫片免费看 | 人妻中文字幕一区二区三区 | 这里只有精品久久 | 精品一区二区三区不卡 | 久久精品国产露脸对白 | 日本中文字幕影院 | 色婷婷在线播放 | 免费a v网站 | 亚洲黄v | 亚洲午夜精品视频 | 欧美国产精品一区二区三区 | 久久久久亚洲av无码专区首jn | 亚洲人成电影网站 | 久操亚洲 | 白峰美羽在线播放 | 尤物一区 | 99riav在线 | 少妇导航av |