nyoj最少步数<水一下>
2016-04-06 18:27
337 查看
最少步数
时间限制: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
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
0表示道路,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
来源
[苗栋栋]原创
上传者
苗栋栋
daima :
时间限制: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
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
0表示道路,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
来源
[苗栋栋]原创
上传者
苗栋栋
daima :
#include<cstdio> #include<queue> #include<cstring> #include<algorithm> using namespace std; int n,kx,ky,jx,jy; int xa[4]={0,0,1,-1}; int ya[4]={1,-1,0,0}; struct node{ int xx,yy,bushu; }; 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} }; void disk() { queue<node> que; bool fafe[10][10]; memset(fafe,true,sizeof(fafe)); node qian,now; now.xx=kx;now.yy=ky;now.bushu=0; que.push(now); fafe[kx][ky]=false; int ll=0; while (!que.empty()) { qian=que.front(); que.pop(); if (qian.xx==jx&&qian.yy==jy) { ll=qian.bushu; break; } for (int i=0;i<4;i++) { int lx=qian.xx+xa[i]; int ly=qian.yy+ya[i]; if (lx<0||ly<0||lx==9||ly==9||map[lx][ly]==1||!fafe[lx][ly]) continue; now.xx=lx;now.yy=ly;now.bushu=qian.bushu+1; que.push(now); fafe[lx][ly]=false; } } printf("%d\n",ll); } int main() { scanf("%d",&n); while (n--) { scanf("%d%d%d%d",&kx,&ky,&jx,&jy); if (kx==jx&&ky==jy) { printf("0\n"); continue; }//printf(" 666\n"); disk(); // printf(" 666\n"); } return 0; }
相关文章推荐
- opencv轮廓检测之椭圆检测-----算法篇(7)--Hough transform检测圆
- LeetCode 260 -Single Number III ( JAVA )
- 剑指offer面试题 翻转单词顺序 VS 左旋转字符串
- 第一次使用JAVA在OJ上刷题
- android crash log 分析[精确地址查询]
- 二维数组最大联通子数组
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- iOS UIView视图的图层控制
- 【转】js修改onclick动作的四种方式
- 神一样的美国高中作文比喻集锦
- 如何使用SQL Server实现SignalR的横向扩展
- 完美方案——iOS的WebView自适应内容高度--推酷
- 第五周项目3(1)
- 小学四则运算(安卓应用)
- SignalR的客户端.NET Client介绍
- 77.代码中添加约束(NSLayoutConstraint)
- 快速排序法
- 冒泡排序法
- 桶排序法
- 安卓菜单