int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, };
它表示一個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫着走或豎着走,不能斜着走,要求編程序找出從左上角到右下角的最短路線。 Input
0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0Sample Output
(0, 0) (1, 0) (2, 0) (2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (4, 4)
#include<stdio.h>
#include<string.h>
int luxian[30][2],migong[5][5];
int count=29;
int zou(int x,int y)
{
if(migong[x][y]==1)return 0;
migong[x][y]=1;
if(x+1<5&&migong[x+1][y]==0)
if(zou(x+1,y)==2){luxian[count][0]=x;luxian[count--][1]=y;return 2;}
if(y+1<5&&migong[x][y+1]==0)
if(zou(x,y+1)==2){luxian[count][0]=x;luxian[count--][1]=y;return 2;}
if(x-1>=0&&migong[x-1][y]==0)
if(zou(x-1,y)==2){luxian[count][0]=x;luxian[count--][1]=y;return 2;}
if(y-1>=0&&migong[x][y-1]==0)
if(zou(x,y-1)==2){luxian[count][0]=x;luxian[count--][1]=y;return 2;}
migong[x][y]=0;
if(x==4&&y==4){luxian[count][0]=x;luxian[count--][1]=y;return 2;}
}
int main()
{
int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&migong[i][j]);
zou(0,0);
for(i=count+1;i<30;i++)
printf("(%d, %d)\n",luxian[i][0],luxian[i][1]);
}