搜索之广度搜索【迷宫搜索】(输出一条路径)

来源:互联网 发布:微企点源码 编辑:程序博客网 时间:2024/05/03 21:30

 

#include<stdio.h>
nchar map[9][9],m,n;
nint stepi[100],stepj[100];
nint flag=0;
nint si,sj, di,dj;
nint dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
nvoid dfs(int si, int sj,int cnt)
n
   int i;
n   if(si>=n||sj>=m||si<0||sj<0) return;
n   if(si==di && sj==dj)
n   {
n    for(i=0;i<cnt;i++)
n    printf("%d,%d/n", stepi[i],stepj[i]);
n    printf("%d,%d/n", di,dj);
n    flag=1;
n   }
n
 
n   stepi[cnt]=si;
n   stepj[cnt]=sj;
n
  { 
n      if(map[si+dir[i][0]][sj+dir[i][1]]!='X')
n      {
n         map[si+dir[i][0]][sj+dir[i][1]]='X'; //已走过,置为x
n  dfs(si+dir[i][0],sj+dir[i][1],cnt+1);
n         map[si+dir[i][0]][sj+dir[i][1]]='.'; //返回上一步时把该方格仍置为空格
n      }
n   }
n   return;
n}
   for(i=0;i<4;i++)//尝试相邻四个可能位置
   if(flag==1)return;  
{   
原创粉丝点击