算法练习-NOJ-1141-走迷宫
2015-04-10 22:29
267 查看
时限:1000ms 内存限制:10000K 总时限:3000ms
描述
判断是否能从迷宫的入口到达出口
输入
先输入两个整数表示迷宫的行数m和列数n,再输入口和出口的坐标,最后分m行输入迷宫,其中1表示墙,0表示空格每个数字之间都有空格。
输出
若能到达,则输出”Yes”,否则输出”No”,结果占一行。
输入样例
3 3
0 0
2 2
0 0 0
1 1 0
0 1 0
输出样例
Yes
描述
判断是否能从迷宫的入口到达出口
输入
先输入两个整数表示迷宫的行数m和列数n,再输入口和出口的坐标,最后分m行输入迷宫,其中1表示墙,0表示空格每个数字之间都有空格。
输出
若能到达,则输出”Yes”,否则输出”No”,结果占一行。
输入样例
3 3
0 0
2 2
0 0 0
1 1 0
0 1 0
输出样例
Yes
#include <stdio.h> int Arr[30][30]; int Rownum=0,Colnum=0; int Beginrow,Begincol,Endrow,Endcol; int state=0; int canplace(int row,int col) { if(row>=0 &&col>=0 &&row<Rownum &&col<Colnum &&Arr[row][col]==0) return 1; return 0; } void search(int row,int col) { if(row==Endrow && col==Endcol) { state=1; return ; } int r,c; Arr[row][col]=1; r=row-1; c=col; if(canplace(r,c)) search(r,c); r=row; c=col+1; if(canplace(r,c)) search(r,c); r=row+1; c=col; if(canplace(r,c)) search(r,c); r=row; c=col-1; if(canplace(r,c)) search(r,c); } int main() { int i,j; scanf("%d%d",&Rownum,&Colnum); scanf("%d%d%d%d",&Beginrow,&Begincol,&Endrow,&Endcol); for(i=0;i<Rownum;i++) for(j=0;j<Colnum;j++) scanf("%d",&Arr[i][j]); Arr[Beginrow][Begincol]=1; search(Beginrow,Begincol); if(state==1) printf("Yes\n"); else printf("No\n"); return 0; }
相关文章推荐
- 算法练习-NOJ-1009-迷宫问题
- 算法练习-NOJ-1042-电子老鼠闯迷宫
- 蓝桥杯练习系统试题集 算法提高 ADV-147 学霸的迷宫
- 算法练习-NOJ-1043-跳马
- 算法练习-NOJ-1044-独轮车
- 算法练习-NOJ-1001-二分查找
- 算法练习-NOJ-1002-归并排序
- 算法练习-NOJ-1045-六数码问题
- 算法练习-NOJ-1004-01背包问题
- 算法练习-NOJ-1442-埃及分数
- 算法练习-NOJ-1003-快速排序
- 算法练习-NOJ-1202-数独游戏
- 算法练习-NOJ-1005-装载问题
- 算法练习-NOJ-1007-8皇后问题
- 算法笔记_107:蓝桥杯练习 算法提高 学霸的迷宫(Java)
- 算法练习-NOJ-1046-防卫导弹
- 算法练习-NOJ-1008-素数环问题
- 算法练习-NOJ-1006-堡垒问题
- 算法练习-NOJ-1323-穷举n位二进制数
- 算法练习-NOJ-1041-最长公共子序列