迷宫找最短路径 深度优先—C

来源:互联网 发布:虚拟机网络连接模式 编辑:程序博客网 时间:2024/05/18 03:26

从迷宫的起点到终点的最短路径,用深度优先搜索

#include<stdio.h>int n,m,p,q,min=99999999;int a[100][100],book[100][100];void dfs(int x,int y,int step){    int tx,ty,k ;    int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};    if(x==p&&y==q)    {        if(min>step)            min=step;        return;    }    for(k=0;k<=3;k++)    {       tx=x+next[k][0];       ty=y+next[k][1];       if(tx<1||tx>n||ty<1||ty>m)           continue;       if(a[tx][ty]==0&&book[tx][ty]==0)       {           book[tx][ty]=1;           dfs(tx,ty,step+1);           book[tx][ty]=0;       }    }    return;}int main(){    int i,j,startx,starty;    scanf("%d%d",&n,&m);    for(i=1;i<=n;i++)        for(j=1;j<=m;j++)        {            scanf("%d",&a[i][j]);        }    scanf("%d%d%d%d",&startx,&starty,&p,&q);    book[startx][starty]=1;    dfs(startx,starty,0);//步数也带上作为参数    //输出最短步数    printf("%d",min);    return 0;}
原创粉丝点击