nyoj--58--最少步数
最少步数
- 描述
-
这有一个迷宫,有0~8行和0~8列:
1,1,1,1,1,1,1,1,1
1,0,0,1,0,0,1,0,1
1,0,0,1,1,0,0,0,1
1,0,1,0,1,1,0,1,1
1,0,0,0,0,1,0,0,1
1,1,0,1,0,1,0,0,1
1,1,0,1,0,1,0,0,1
1,1,0,1,0,0,0,0,1
1,1,1,1,1,1,1,1,10表示道路,1表示墙。
现在输入一个道路的坐标作为起点,再如输入一个道路的坐标作为终点,问最少走几步才能从起点到达终点?
(注:一步是指从一坐标点走到其上下左右相邻坐标点,如:从(3,1)到(4,1)。)
- 输入
-
第一行输入一个整数n(0<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。 - 输出
- 输出最少走几步。
- 样例输入
-
2 3 1 5 7 3 1 6 7
- 样例输出
-
12 11
思路:一道很普通的广搜,确实是太长时间没做了生疏了。需要注意的一点就是要考虑起点和终点相同的这种情况。
ac代码:
#include<stdio.h>//二维数组的初始化需要放在定义的时候 #include<queue>//如果终点和起点一样步数应该为0. #include<string.h> #define INF 0x3f3f3f using namespace std; struct node{int x,y,t; }a,temp; int x1,y1,x2,y2,cx[4]={0,0,1,-1},cy[4]={-1,1,0,0},vis[10][10]; int map[9][9]={1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,0,1,1,0,0,0,1,1,0,1,0,1,1,0,1,1,1,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,}; int jud(int x,int y){if(x<0&&x>8&&y<0&&y>8)return 0;if(map[x][y]==1||vis[x][y]==1)return 0; return 1; } void bfs(){memset(vis,0,sizeof(vis)); queue<node>q;int ans=INF;a.x=x1;a.y=y1;a.t=0;vis[a.x][a.y]=1;q.push(a);while(!q.empty()){a=q.front();q.pop(); for(int i=0;i<4;i++){temp.x=a.x+cx[i];temp.y=a.y+cy[i];temp.t=a.t+1;if(jud(temp.x,temp.y)){vis[temp.x][temp.y]=1;if(temp.x==x2&&temp.y==y2)if(ans>temp.t)ans=temp.t;q.push(temp);}}}printf("%d\n",ans); } int main(){int T;scanf("%d",&T);while(T--){scanf("%d%d%d%d",&x1,&y1,&x2,&y2);if(x1==x2&&y1==y2)printf("0\n"); elsebfs();}return 0; }
nyoj--58--最少步数相关推荐
- NYOJ ~ 58 ~ 最小步数(DFS)
代码如下: #include<stdio.h> #include<iostream> #include<algorithm> #include<string. ...
- NYOJ ~ 58 ~ 最小步数(BFS)
代码如下: #include<bits/stdc++.h> using namespace std; const int MAXN = 15; struct Node { int x,y, ...
- 最少步数----深搜
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...
- C语言求解华容道游戏最少步数及移动过程
华容道游戏简要描述 在一个5行4列的方格区域中,摆放曹操(2*2),五虎将(1*2或2*1),蜀兵(1*1)共占18个方格,其中剩余2个方格用于移动板块,玩家需要通过移动其中板块将曹操移动到出口,并且 ...
- T1330 最少步数(#Ⅱ- 8)(广度优先搜索)
[题目描述] 在各种棋中,棋子的走法总是一定的,如中国象棋中马走"日".有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按"日"走,也能如象 ...
- 最少步数(dfs + bfs +bfs优化)
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...
- 信息学奥赛一本通(1330:【例8.3】最少步数)
1330:[例8.3]最少步数 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 10314 通过数: 5549 [题目描述] 在各种棋中,棋子的走法总是一定 ...
- 最少步数(信息学奥赛一本通-T1330)
[题目描述] 在各种棋中,棋子的走法总是一定的,如中国象棋中马走"日".有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按"日"走,也能如象 ...
- NYOJ-58 最少步数
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描写叙述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0, ...
- 1330:【例8.3】最少步数
1330:[例8.3]最少步数 [题目描述] 在各种棋中,棋子的走法总是一定的,如中国象棋中马走"日".有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按&qu ...
最新文章
- 搭建struts2.1.6环境所需要的包(7个)
- OpenStack-MitakaCentos7.2双节点搭建--(三)Glance(镜像服务)
- ajax和rxjs,javascript – RxJS 5 Observable和Angular2 http:调用ajax一次,保存结果,随后的ajax调用使用缓存结果...
- 作者:陈康(1976-),男,博士,清华大学计算机科学与技术系、深圳清华大学研究院、浙江清华长三角研究院鄞州创新中心副教授...
- 在VS2005下搭建和使用CppUnit
- ios 自己创建的动态frameworks 怎么发布_苹果 iOS 14 修复 2 年来的一个bug 果粉炸锅:原来不是自己手残...
- idea docker 一键部署实战
- 2021-2025年中国电影行业市场供需与战略研究报告
- ios开发之cocoapods导入新三方库报错RuntimeError - [Xcodeproj] Unknown object version.
- mysql 用户列表数据结构_MySQL数据结构-行结构
- XINS 3.0 正式版发布,远程 API 调用规范
- C语言学习:C语言编译流程
- GIS应用技巧之景观格局分析(三)
- 组织人事类主数据业务梳理以及流程编排
- 25.有5个人做在一起, 问第五个人多少岁? 他说比第四个人大2岁. 问第四个人岁数, 他说比第是三个人大2岁. 问第三个人, 又说比第二人大两岁. 问第二个人, 说比第一个人大两岁. 最后问第一个人
- 记一次惊险的文件恢复经历Eclipse saved my day
- SPI总线通信——基于STM32MP157A
- EXCEL函数之“VLOOKUP”
- CCF考试——201412-4最优灌溉
- 《苏宁易购:商品详情系统架构设计》读后感
热门文章
- git push 提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。的解决办法
- 云单元架构,如何赋能数字化转型呢?
- 数据工作本质:从业务中来,到业务中去
- “Java引领技术人生”巡讲活动圆满结束
- 优化理论07-----拟牛顿法、拟牛顿方程、对称秩二更新公式、BFGS、DFS、Broyden族、Huang’s Family
- PHP获取对象的hashcode_php 字符串转hashcode(包括中文)
- 基于单片机的自动加热水壶控制器代码_应用于实时温度控制的单片机设计
- 苹果手机说明书_知科技新鲜事 | 华为Mate40系列手机壳曝光:3.5mm耳机孔
- 华数机器人编程语言_招新 | 海大最「酷」的科创团队,确定不来了解一下吗?...
- 蓝桥杯2020年第十一届Python省赛第一题-门牌制作