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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HDU 2612 Find a way

發布時間:2024/6/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 2612 Find a way 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//2612 Find a way //題意:給一幅圖,有墻,有KFC,有路。兩個人要去KFC約會,有很多個KFC,問兩個人去一間KFC總共走的最少步數 //廣搜水題,居然被初始化卡了兩個鐘悲劇了。。。對兩個人進行BFS,相加步數即可,在網上看到不少人單獨寫了兩個BFS,用兩個單獨的二維數組去存步數,可以是可以,但是如果真正理解BFS的話,一個BFS一個二維數組就可以了,沒有分開的必要,又節約了50行代碼量和200*200*4個字節的空間,O(∩_∩)O~ #include<iostream> #include<queue> #define MAXN 0x3fffffff; using namespace std;int n, m; char map[210][210]; int cnt[210][210]; int cnt2[210][210]; int visited[210][210]; int vec[4][2]={{0,1},{-1,0},{1,0},{0,-1}};struct node {int x;int y;int step;bool check(){if (x>=0 && x<n && y>=0 && y<m)return true;return false;} }Y, M;void BFS(node start, int num) {memset(visited, 0, sizeof(visited));queue<node> Q;Q.push(start);visited[start.x][start.y] = true;while(!Q.empty()){node q = Q.front();Q.pop();for (int i = 0; i<4; i++){node p = q;p.x = q.x + vec[i][0];p.y = q.y + vec[i][1];p.step ++;if (p.check() && map[p.x][p.y] != '#' && !visited[p.x][p.y]){visited[p.x][p.y] = true;Q.push(p);if (map[p.x][p.y] == '@'){//BFS精粹if (num == 1)cnt[p.x][p.y] = p.step;//第一次elsecnt[p.x][p.y] += p.step;//第二次}}}} }int main() {while (cin>>n>>m){for (int i = 0; i<n; i++){for (int j = 0; j<m; j++){cin>>map[i][j];if (map[i][j] == 'Y'){Y.x = i;Y.y = j;Y.step = 0;}if (map[i][j] == 'M'){M.x = i;M.y = j;M.step = 0;}}}for (i = 0; i<n; i++)for (int j = 0; j<m; j++)cnt[i][j] = cnt2[i][j] = MAXN;BFS(Y, 1);BFS(M, 2);int min = MAXN;for (i = 0; i<n; i++){for (int j = 0; j<m; j++){if (map[i][j] == '@' && (cnt[i][j] < min))min = cnt[i][j];}}cout<<min * 11<<endl;}return 0; }


轉載于:https://www.cnblogs.com/pangblog/p/3278124.html

總結

以上是生活随笔為你收集整理的HDU 2612 Find a way的全部內容,希望文章能夠幫你解決所遇到的問題。

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