迷宫问题 bfs
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int map[10][10],dp[10][10];
int xx[4]={1,0,0,-1};
int yy[4]={0,1,-1,0};
int mark[40][40];
int judge(int x,int y)
{
if(x<0||x>=5||y<0||y>=5)
return 0;
return 1;
}
void DFS(int x,int y)
{
int i,j,x1,y1;
if(x==4&&y==4)
{
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(dp[i][j]==1)
printf("(%d,%d)\n",i,j);
return ;
}
if(map[x][y]==1)
return;
map[x][y]=1;
for(i=0;i<4;i++)
{
x1=x+xx[i];
y1=y+yy[i];
if(map[x1][y1]!=1&&judge(x1,y1))
{
dp[x1][y1]=1;
DFS(x1,y1);
dp[x1][y1]=0;
}
}
}
int main( )
{
int i,j,k;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&map[i][j]);
memset(dp,0,sizeof(dp));
dp[0][0]=1;
DFS(0,0);
system("pause");
return 0;
}
posted on 2011-05-10 20:38 more think, more gains 阅读(273) 评论(0) 收藏 举报
浙公网安备 33010602011771号