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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

营救

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 营救 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述:
鐵塔尼號遇險了!他發出了求救信號。距離最近的哥倫比亞號收到了訊息,時間就是生命,必須盡快趕到那里。
通過偵測,哥倫比亞號獲取了一張海洋圖。這張圖將海洋部分化成nn個比較小的單位,其中用1標明的是陸地,用0標明是海洋。當然,船只能在海洋上行駛,且船只能從一個格子,移到相鄰的四個格子。
為了盡快趕到出事地點,哥倫比亞號最少需要走多遠的距離。
數據輸入:
從文件save.in中讀入數據,第一行為n,下面是一個nn的0,1矩陣,表示海洋地圖,最后一行為四個小于n的整數,分別表示哥倫比亞號和鐵塔尼號的位置。
數據輸出:
哥倫比亞號到鐵塔尼號的最短距離,答案精確到整數。
輸入輸出樣例:
save. in
3
001
101
100
1 1 3 3
save.out
4
數據范圍說明:N<=1000。

.
.
.
.
.
分析
廣搜
到達目的地就直接輸出

.
.
.
.
.
程序:

#include<iostream> #include<cstdio> #include<cstring> using namespace std;int d[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; int gry[800000][3],n,m,a[1010][1010],f[1010][1010]; int x1,y1,x2,y2;void bfs() {int head=0,tail=1;while (head<tail){head++;for (int i=0;i<=3;i++){int x=gry[head][0]+d[i][0];int y=gry[head][1]+d[i][1];if (x>=1&&x<=n&&y>=1&&y<=n&&f[x][y]==0){tail++;gry[tail][0]=x;gry[tail][1]=y;a[x][y]=gry[tail][2]=gry[head][2]+1; f[x][y]=1;}if (x==x2&&y==y2){printf("%d",a[x][y]);return;}}} } int main() {freopen("save.in","r",stdin);freopen("save.out","w",stdout);scanf("%d",&n);memset(f,1,sizeof(f));for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){char x;cin>>x;f[i][j]=(int)x-'0';}scanf("%d%d%d%d",&x1,&y1,&x2,&y2);gry[1][0]=x1;gry[1][1]=y1;bfs();fclose(stdin);fclose(stdout);return 0; }

轉載于:https://www.cnblogs.com/YYC-0304/p/11094910.html

總結

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

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