nyoj_58迷宫问题
来源:互联网 发布:淘宝飞猪靠谱吗 编辑:程序博客网 时间:2024/06/13 23:02
题目链接:http://oj.nyist.me/OJ/contest_problem.php?cid=1038&pid=6
G : 最少步数
题目描述
这有一个迷宫,有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)分别表示起点的行、列,终点的行、列。</pre" style="box-sizing: border-box;">
输出
输出最少走几步。
样例输入
23 1 5 73 1 6 7
样例输出
1211
提示
无
来源
nyoj
#include<stdio.h>#include<string.h>int n,x1,y1,x2,y2,ans;int maze[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 round[9][9]={0};//用来判断有没有在转圈圈;void dfs(int a,int b,int sum){ if(round[a][b]==1||maze[a][b]==1||sum>ans)//注意到迷宫的周围一圈都是1; return ; if(a==x2&&b==y2) { ans=sum; return ; } round[a][b]=1; dfs(a,b+1,sum+1); dfs(a,b-1,sum+1); dfs(a+1,b,sum+1); dfs(a-1,b,sum+1); round[a][b]=0;}int main(){ scanf("%d",&n); while(n--) { memset(round,0,sizeof(round)); scanf("%d%d%d%d",&x1,&y1,&x2,&y2); ans=999; dfs(x1,y1,0); printf("%d\n",ans); } return 0;}
阅读全文
0 0
- nyoj_58迷宫问题
- NYOJ_58 最少步数
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题...
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 剑指offer—替换空格
- 【菜鸟日记】不要62! HDU
- 使用response的writer(九)
- 奇妙的动态小程序
- 创建继承于类person的类student
- nyoj_58迷宫问题
- ChartDirectorPanel 图形展现组件
- 一维数组
- opencv for python (10) 图像旋转函数+仿射变换函数+透视变换
- XML、JSON及其解析
- Random的用法
- HTMLcanvas画矩形
- jQuery制作的简化三级联动菜单
- Hive的数据导入——Load语句