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

 

#include<stdio.h>
n char map[9][9],m,n;
n int stepi[100],stepj[100];
n int flag=0;
n int si,sj, di,dj;
n int dir[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
n void 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;  
{   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值