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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BFS+状态压缩 hdu-1885-Key Task

發布時間:2025/1/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BFS+状态压缩 hdu-1885-Key Task 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:

http://acm.hdu.edu.cn/showproblem.php?pid=1885

題目意思:

給一個矩陣,給一個起點多個終點,有些點有墻不能通過,有些點的位置有門,需要拿到相應顏色的鑰匙才能打開,問到達終點的最短步數。

解題思路:

BFS+狀態壓縮。

將每種顏色對應一個二進制數位,1表示已經得到該顏色的鑰匙,0表示沒有得到。

一把鑰匙可以同種顏色的多扇門。

代碼:

?

#include<iostream> #include<cmath> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<algorithm> #include<vector> #include<map> #include<set> #include<stack> #include<list> #include<queue> #define eps 1e-6 #define INF 0x1f1f1f1f #define PI acos(-1.0) #define ll __int64 #define lson l,m,(rt<<1) #define rson m+1,r,(rt<<1)|1 //#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std;/* freopen("data.in","r",stdin); freopen("data.out","w",stdout); */map<char,int>myp1,myp2;bool vis[20][110][110]; char save[110][110]; int n,m,dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};struct Point {int x,y,step,ss; }s;bool iscan(int x,int y) {if(x<1||x>n||y<1||y>m||save[x][y]=='#')return false;return true; } //一把鑰匙可以開顏色相同的多種鎖 void bfs() {memset(vis,false,sizeof(vis));s.step=0,s.ss=0;queue<Point>myq;myq.push(s);vis[0][s.x][s.y]=true;while(!myq.empty()){Point tmp=myq.front();myq.pop();int xx,yy;for(int i=0;i<4;i++){xx=tmp.x+dir[i][0],yy=tmp.y+dir[i][1];if(!iscan(xx,yy))continue;if(save[xx][yy]=='X'){printf("Escape possible in %d steps.\n",tmp.step+1);return ;}int tt=tmp.ss;if(myp1.find(save[xx][yy])!=myp1.end()) //得到一把鑰匙{tt=tt|(1<<myp1[save[xx][yy]]);if(vis[tt][xx][yy]) //該狀態之前已被訪問continue;}else if(myp2.find(save[xx][yy])!=myp2.end()){if(!(tt&(1<<myp2[save[xx][yy]]))) //沒有鑰匙continue;}if(vis[tt][xx][yy])continue;vis[tt][xx][yy]=true;Point t;t.x=xx,t.y=yy,t.ss=tt,t.step=tmp.step+1;myq.push(t);}}printf("The poor student is trapped!\n");return ; }int main() {myp1['b']=0,myp1['y']=1,myp1['r']=2,myp1['g']=3; //每種不同的顏色對應不同的數位myp2['B']=0,myp2['Y']=1,myp2['R']=2,myp2['G']=3;while(scanf("%d%d",&n,&m)&&m+n){memset(vis,false,sizeof(vis));for(int i=1;i<=n;i++){scanf("%s",save[i]+1);for(int j=1;j<=m;j++){if(save[i][j]=='*')s.x=i,s.y=j;}}bfs();}return 0; }


?

?

總結

以上是生活随笔為你收集整理的BFS+状态压缩 hdu-1885-Key Task的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 久久精品国产免费看久久精品 | 欧美怡红院视频 | 91亚洲国产成人精品一区二三 | 香蕉在线观看视频 | 亚洲看 | 欧美中文字幕一区 | 韩国美女福利视频 | 久久这里只有精品首页 | 亚洲av无码国产精品永久一区 | 亚洲天堂中文字幕 | 中文字幕女同 | jzzijzzij亚洲成熟少妇在线观看 久久久精品人妻一区二区三区 | 国产主播喷水 | 国产网站入口 | 欧美图片一区二区三区 | 欧美久操 | 欧美日韩在线播放三区四区 | 欧美成人精品一区二区免费看片 | 在线播放波多野结衣 | 免费黄色一区二区 | 欧美日韩aaa | 国产极品999 | 红桃成人网 | 嫩草影院一区二区 | 玖玖在线免费视频 | 波多野结衣一区二区三区高清 | 91av不卡| 国产成人精品视频在线 | 国产精品日韩专区 | 中文字幕有码在线 | 嫩草影院一区二区三区 | 国产欧美日韩三区 | 久久精品国产亚洲av麻豆色欲 | 亚洲欧美日韩精品久久 | 欧美日韩一区二区三区69堂 | 最色网站| 鲁啊鲁在线视频 | 国产一级特黄a高潮片 | 日韩免费观看一区二区 | 中文字幕在线视频免费播放 | 99热香蕉| 在线免费观看福利 | 精品人伦一区二区三区 | 成人毛片在线播放 | 看av网址 | 国产精品第72页 | 久久新网址| 日韩欧美的一区二区 | 波多野结衣av无码 | 中文字幕国产专区 | 黄色动漫在线免费观看 | 日日射射 | 中文字幕成人网 | 亚洲性视频网站 | 三年中国片在线高清观看 | 国产美女性生活 | 欧美久久久影院 | 国产又粗又猛又爽又黄又 | 欧美性猛交xxxx乱大交退制版 | 黄色片在线视频 | 亚洲黄色在线 | 日韩黄大片 | 黄色在线观看av | 欧美性猛交aaaa片黑人 | 国产av天堂无码一区二区三区 | 中文字幕观看av | 亚洲欧洲综合 | 久久久久九九九九 | 亚洲爽爆 | 爱情岛亚洲论坛入口福利 | 拔擦8x成人一区二区三区 | 国产人成视频在线观看 | 超碰在线小说 | 爱爱视频在线看 | 人妻熟女一区 | 女同hd系列中文字幕 | 日本一区二区三区免费在线观看 | 国产污污在线观看 | 恶虐女帝安卓汉化版最新版本 | 国产999久久久 | 免费黄色网址观看 | xxxx日本黄色 | 韩国主播青草200vip视频 | 国产喷白浆一区二区三区 | 香蕉人妻av久久久久天天 | 欧美卡一卡二 | 91视频在线免费观看 | 一区二区成人在线 | 狠久久 | gav久久| 精品视频一二区 | 天堂av在线免费 | 人成免费在线视频 | 日韩网站免费观看 | 亚洲一区二区视频网站 | 国产熟妇一区二区三区aⅴ网站 | 播放美国生活大片 | 在线免费一级片 | 国产精品扒开腿做爽爽爽a片唱戏 |