第16周 啊哈算法 深度优化搜索应用(最短路径算法)

问题及代码:

/*求最短路径算法
用途:可用于交通系统、营救最优路径 
*/ 

#include<stdio.h>
int n,m,p,q,min=999999;
int a[50][51],book[50][51];

void dsf(int x,int y,int step)
 {
   //下一步四个方向的数组
   int next[4][2]={(0,1),
                   (1,0),
                   (0,-1),
                   (-1,0)};
   
   if(x==p && y==q)
     {
       if(step<min)
        {
          min=step; 
          return;
         }
      }
  
   int k;
   for(k=1;k<=4;k++)
    {
      x=x+next[k][0];//x一直在第一位,即0
      y=y+next[k][1]; //y一直在第二位,即1

      if(a[x][y]==0 && book[x][y]==0)//判断坐标是否为障碍物和标记
       {
         book[x][y]=1;
         dsf(x,y,step+1);
         book[x][y]=0;
        }
     return;
    }
}

 int main()
 {
   int i,j,startx,starty;
   for(i=0;i<n;i++)
      for(j=0;j<m;j++)
         scanf("%d %d",&n,&m);

   scanf("%d %d %d %d",&startx,&starty,&p,&q);
   dsf(startx,starty,0);

   getchar();getchar();
   return 0;
 }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值