营救
【问题描述】
铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里。通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成n*n个比较小的单位,其中用1标明的是陆地,用0标明是海洋。船只能从一个格子,移到相邻的四个格子。为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离?
【输入格式】
第一行为n,下面是一个n*n的0、1矩阵,表示海洋地图
最后一行为四个小于n的整数,分别表示哥伦比亚号和铁塔尼号的位置。
【输出格式】
哥伦比亚号到铁塔尼号的最短距离,答案精确到整数。
【输入样例】save.in
3
001
101
100
1 1 3 3
【输出样例】save.out
4
【数据范围】
N<=1000
算法分析:中规中矩的广搜即可解决问题。
这里把出发点到达a[i][j]需要走的步数记录在a[i][j]。
1 #include<stdio.h> 2 #include<iostream> 3 #include<queue> 4 using namespace std; 5 6 #define maxN 1002 7 8 int a[maxN][maxN]={0}; 9 int desx,desy,soux,souy; 10 queue<int> qx,qy; 11 int dx[4]={0,1,0,-1},//右,下,左,上 12 dy[4]={1,0,-1,0}; 13 int main() 14 { 15 int n,i,j; 16 char strTemp[maxN]; 17 int xx,yy; 18 int f=0;//0表示尚未找到目的地,1表示已经搜索到达目的地 19 freopen("save.in","r",stdin); 20 freopen("save.ans","w",stdout); 21 22 scanf("%d",&n);getchar(); 23 //printf("%d\n",n); 24 for(i=0;i<n;i++) 25 { 26 gets(strTemp); 27 //puts(strTemp); 28 for(j=0;strTemp[j]!='\0';j++) 29 {a[i][j]=strTemp[j]-'0';} 30 } 31 scanf("%d%d%d%d",&soux,&souy,&desx,&desy); 32 //printf("%d %d %d %d\n",soux,souy,desx,desy); 33 soux--; souy--; 34 desx--; desy--; 35 36 a[soux][souy]=1; 37 qx.push(soux); qy.push(souy); 38 //printf("%d,%d\n",soux,souy); 39 while(!qx.empty()) 40 { 41 for(i=0;i<4;i++) 42 { 43 xx=qx.front()+dx[i]; yy=qy.front()+dy[i]; 44 if(xx>=0&&yy>=0&&xx<n&&yy<n&&a[xx][yy]==0) 45 { 46 a[xx][yy]=a[qx.front()][qy.front()]+1; 47 qx.push(xx); qy.push(yy); 48 //printf("%d,%d\n",xx,yy); 49 } 50 if(xx==desx&&yy==desy) 51 { 52 f=1; 53 break; 54 } 55 } 56 qx.pop(); 57 qy.pop(); 58 if(f) break; 59 } 60 printf("%d\n",a[desx][desy]-1); 61 /**/ 62 return 0; 63 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App