迷宫问题 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  阅读(266)  评论(0编辑  收藏  举报

导航