您的位置:首页 > 其它

算法练习-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

#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; }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: