NYOJ58最少步数(BFS)
2015-08-05 20:16
393 查看
最少步数
[align=center]时间限制:3000 ms | 内存限制:65535 KB[/align][align=center]难度:4[/align]
描述
这有一个迷宫,有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
/*BFS代码*/
#include<stdio.h> #include<string.h> #include<queue> #define max 0xfffffff using namespace std; int ans[9]={1,0,-1,0,0,1,0,-1}; int x,y,ex,ey,arr[15][15],cnt; 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, }; struct node { int x,y,tp; }a,b; int judge (struct node h) { if (h.x<0||h.x>=9||h.y<0||h.y>=9) return 0; if (arr[h.x][h.y]||map[h.x][h.y]) return 0; if (h.tp>=cnt) return 0; return 1; } void bfs() { a.x=x; a.y=y; a.tp=0; memset(arr,0,sizeof(arr)); queue<node>q; arr[x][y]=1; q.push(a); while (!q.empty()) { a=q.front(); q.pop(); for (int i=0;i<8;i+=2) { b.x=a.x+ans[i]; b.y=a.y+ans[i+1]; b.tp=a.tp+1; if (judge(b)) { if (b.x==ex&&b.y==ey) { if (b.tp<cnt) cnt=b.tp; continue; } arr[b.x][b.y]=1; q.push(b); } } } } int main() { int t; scanf ("%d",&t); while (t--) { scanf ("%d%d%d%d",&x,&y,&ex,&ey); if (x==ex&&y==ey) { printf ("0\n"); continue; } cnt=max; bfs(); printf ("%d\n",cnt); } return 0; }
/*BFS和优先
相关文章推荐
- IOS学习之获取远程数据NSURL
- JDK、JRE安装以及 Java环境变量配置
- TranslateAnimation 位移动画效果
- 南阳 oj 郁闷的c小加(三) 题目409
- Longest Common Prefix
- 杭电 2015 偶数求和
- zedboard中断实现
- iOS 使用nib文件(二)
- hdoj 1728 逃离迷宫 【BFS 记录转弯次数】
- 【C】字符串的输入,求输入字符串中最长的单词
- linux使用普通账户时,无法登录,提示“-bash: fork: retry: Resource temporarily unavailable”
- Java大数 字符串处理 HDU2100
- zoj1003Crashing Balloon
- IOS学习之Objective-C中的@property和@synthesize用法
- 最长回文自负串1 求长度
- UIScrolView里自己滚动滑动 ,无限制那种
- day16
- Hudson任务配置说明
- 二叉树左旋和右旋
- 揭秘网络女主播:百万年薪下的暗黑成长史(全)