首页 > 编程语言 >打卡信奥刷题(222)用C++信奥P1746[普及组/提高] 离开中山路

打卡信奥刷题(222)用C++信奥P1746[普及组/提高] 离开中山路

时间:2024-11-12 15:48:34浏览次数:3  
标签:信奥 int wei P1746 tou ma 打卡 100 1000

离开中山路

题目背景

《爱与愁的故事第三弹·shopping》最终章。

题目描述

爱与愁大神买完东西后,打算坐车离开中山路。现在爱与愁大神在 x 1 , y 1 x_1,y_1 x1​,y1​ 处,车站在 x 2 , y 2 x_2,y_2 x2​,y2​ 处。现在给出一个 n × n ( n ≤ 1000 ) n \times n(n \le 1000) n×n(n≤1000) 的地图, 0 0 0 表示马路, 1 1 1 表示店铺(不能从店铺穿过),爱与愁大神只能垂直或水平着在马路上行进。爱与愁大神为了节省时间,他要求最短到达目的地距离(每两个相邻坐标间距离为 1 1 1)。你能帮他解决吗?

输入格式

第 1 1 1 行包含一个数 n n n。

第 2 2 2 行到第 n + 1 n+1 n+1 行:整个地图描述( 0 0 0 表示马路, 1 1 1 表示店铺,注意两个数之间没有空格)。

第 n + 2 n+2 n+2 行:四个数 x 1 , y 1 , x 2 , y 2 x_1,y_1,x_2,y_2 x1​,y1​,x2​,y2​。

输出格式

只有 1 1 1 行,即最短到达目的地距离。

样例 #1

样例输入 #1

3
001
101
100
1 1 3 3

样例输出 #1

4

提示

对于 20 % 20\% 20% 数据,满足 1 ≤ n ≤ 100 1\leq n \le 100 1≤n≤100。

对于 100 % 100\% 100% 数据,满足 1 ≤ n ≤ 1000 1\leq n \le 1000 1≤n≤1000。

C++实现

#include
#include
int fx[4]={1,0,-1,0};
int fy[4]={0,1,0,-1};
char ma[1001][1001];
struct node{int x,y,c;}q[1100000];
int n;
void bfss(int stx,int sty,int enx,int eny){
int tou=1,wei=2;//接下来几句就是一般的搜索了
q[tou].x=stx;q[tou].y=sty;//第一步在起点开始
q[tou].c=0;//走到起点需要0步
while(tou!=wei){
for(int i=0;i<4;i++){
int xx=q[tou].x+fx[i];
int yy=q[tou].y+fy[i];
if(xxenx&&yyeny){printf(“%d”,q[tou].c+1);return;}
if(xx<1||xx>n||yy<1||yy>n||ma[xx][yy]==‘1’) continue;
ma[xx][yy]=‘1’;//走过了封路
q[wei].x=xx;//走下一步
q[wei].y=yy;//走下一步
q[wei].c=q[tou].c+1;//步数加一
wei++;//前进
}
tou++;//前进
}
}
int main(){
scanf(“%d”,&n);
for(int i=1;i<=n;i++) {
scanf(“%s”,ma[i]+1);
}
int sx,sy,ex,ey;scanf(“%d %d %d %d”,&sx,&sy,&ex,&ey);
ma[sx][sy]=1;//起点为1
bfss(sx,sy,ex,ey);//搜索
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

标签:信奥,int,wei,P1746,tou,ma,打卡,100,1000
From: https://blog.csdn.net/rogeliu/article/details/143659887

相关文章

  • 打卡信奥刷题(221)用C++信奥P1740[普及组/提高] Diamond A&B(1)
    DiamondA&B(1)题目背景由于本题较难,将本题拆做两题,分别为diamondA以及diamondB。本题为DiamondA。题目描述教主上电视了!这个消息绝对是一个爆炸性的新闻。一经传开,大街上瞬间就没人了(都回家看电视去了),商店打烊,工厂停业。大家都把电视机的音量开到最大,教主的声音......
  • 识海社区打卡-3
    CodeforcesRound986(Div.2)赛后补题战况如下:当然打完这场升绿了,虽然我也没想到。b题wa了很多发还是阅读理解的水平不太够,还没又补了一个样例说明我就看明白了不过还是wa了几发,不过确实用了我太长时间,欠训了。比赛时c题我没有去实现,不过看样例猜了一个方法,赛后看答案我才发......
  • 南沙C++信奥赛老师解一本通题 1385:团伙(group)
    ​【题目描述】在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足:1、我朋友的朋友是我的朋友;2、我敌人的敌人是我的朋友;所有是朋友的人组成一个团伙。告诉你关于这n个人的m条信息,即某两个人是朋友,或者某两个人是敌人,请你编写一个程序,计算出这个城市最多可能有多......
  • 考研打卡(14)
    开局(14)开始时间 2024-11-11 20:21:43结束时间 2024-11-11 22:00:55今天考研数学的资料到了数据结构设一组初始记录关键字序列为(50,40,95,20,15,70,60,45),则以增量d=4的一趟希尔排序结束后前4条记录关键字为_____(中国地质大学2017年)A40,50,20,95B15,40,60,20C15,20,......
  • 考研打卡(13)
    开局(13)开始时间 2024-11-10 21:56:51结束时间 2024-11-10 22:48:52今天去了河北经贸大学回来还打了剧本杀数据结构下列说法错误的事____(中国科学技术大学)A只有在线性表的初始状态为反序的情况下,冒泡排序过程中元素的移动次数才会达到最大值B只有在线性表的初始状......
  • 识海社区打卡-2
    今天打卡一道题,白天太忙了,没时间打卡树状数组,昨天就睡了三小时就去软考了差点没猝死我,回来路上还见识到了哈尔滨公交车的险恶导致下午三点才到校,花了一个小时吃饭洗漱然后就睡觉了,7点起到工位上,看了会昨天cf的题解摆烂了一会就到十点了,得抓紧更新打卡然后接着cf,明天还有早八悲,感觉......
  • 树状数组learning Day1识海社区打卡1st
    鉴于上次省赛的惨烈失败教训,狠狠加训,距离下次沈阳站还有两星期,再次感谢东北大学赐予的外卡机会,你知道的,东北大学一直是我的第二户籍所在地。今天到下星期周末为止估计都会持续更新树状数组和线段树相关的笔记。我的刷题顺序大概会按照[灵神提单](LC-Rating&Training)->codefor......
  • 泷羽sec-星光不负a-学习打卡-信息收集(3)
    天眼查https://www.tianyancha.com/(有经济条件开会员)企查查https://www.qcc.com/(可查询相关人电话和公开招标文件信息)谷歌搜索语法1.intext查找网页中含有某个关键字的网站例如:intext:登录后台2.intitle查找标题中含有某个关键词的网页例如:intitle:登录后台3......
  • python+flask计算机毕业设计好骑行打卡园app系统(程序+开题+论文)
    文件加密系统的设计与实现tp835本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容好骑行打卡园app系统毕业设计相关内容说明一、选题背景随着骑行运动在全球范围内的日益流行,与之相关的数字化服务......
  • 力扣21 打卡17 设计相邻元素求和服务
    思路:该方案通过构建一个字典,将每个元素值映射到其在二维数组中的坐标位置,以便快速查找。adjacentSum方法根据指定元素的坐标,计算其上下左右相邻元素之和;diagonalSum方法则计算该元素的四个对角线相邻元素之和。每个方法通过判断相邻坐标是否在数组边界内,确保不越界访问。......