离开中山路

记录开始点和结束点的位置开始点设为1,不能走回来结束点不能设为1,不然走不到搜索一遍就没了*/

#include<cstdio>#include<cstring>int fx[4]={1,0,-1,0};int fy[4]={0,1,0,-1};char ma[1001][1001];//注意注意!!一点要用char,输入图的时候没有空格,int输入不了 struct node{int x,y,c;}q[1100000];//(x,y)坐标,c是步数 int n; void bfss(int stx,int sty,int enx,int eny)//(stx,sty)起点位置,(enx,eny)终点位置 {    int tou=1,wei=2;     q[tou].x=stx;q[tou].y=sty;//第一步在起点开始     q[tou].c=0;//走到起点需要0步     while(tou!=wei)    {        for(int i=0;i<4;i++)//四个方向可以走         {            int xx=q[tou].x+fx[i];//xx等于当前步q[tou].x,fx[i]是偏移量             int yy=q[tou].y+fy[i];//yy同理             if(xx==enx&&yy==eny){printf("%d",q[tou].c+1);return;}//如果走到重点,输出当前步数加1(因为走到终点也算一步),然后结束             if(xx<1||xx>n||yy<1||yy>n||ma[xx][yy]=='1') continue;//如果出界或者不能走,跳过             ma[xx][yy]='1';//走过了封路             q[wei].x=xx;//走下一步             q[wei].y=yy;//走下一步             q[wei].c=q[tou].c+1;//步数加一             wei++;//前进         }        tou++;//前进     }}int main(){    scanf("%d",&n);    for(int i=1;i<=n;i++)    {        scanf("%s",ma[i]+1);//只能这样输入,用%c会有BUG,会没有输出     }    int sx,sy,ex,ey;scanf("%d %d %d %d",&sx,&sy,&ex,&ey);//输入起点终点坐标     ma[sx][sy]=1;//起点为1     bfss(sx,sy,ex,ey);//搜索     return 0;}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值