• C语言 递归实现迷宫寻路问题


    迷宫问题采用递归和非递归两种方法,暂时完成递归方法,后续会补上非递归方法

    #include<stdio.h>
    #include<stdbool.h>
    
    bool findPath(int a[][8],int i,int j){//递归找出口
        if(i==6&&j==6)//如果找到了目标a[6][6]则返回true
            return true;
        if(a[i][j]==0)//若当前路径未被找到,则继续
        {
            a[i][j]=2;//当前走的路径置为2,表示走过
            if(findPath(a,i+1,j)||findPath(a,i,j+1)||findPath(a,i-1, j)||findPath(a,i-1,j))//每个方向都判断,依次展开递归,寻找最佳路径
                return true;//若选择的路径可以走,则返回true
            else{//若当前选择的路径不能走
                a[i][j]=0;//弹栈并恢复路径,回退到上一次的位置
                return false;
            }
        }
        else//未能找到最终点
            return false;
    }
    void print(int a[][8])//打印当前的二维数组表
    {
        for(int i=0;i<8;i++){
            for(int j=0;j<8;j++){
                printf("%d ",a[i][j]);
            }
            printf("
    ");
        }
    }
    int main(){
        int a[8][8]={0};
        for(int i=0;i<8;i++)//设置围墙和障碍物
        {
            a[0][i]=1;
            a[i][0]=1;
            a[7][i]=1;
            a[i][7]=1;
        }
        a[3][1]=1;
        a[3][2]=1;
        print(a);
        printf("-----------after find path-----------
    ");
        findPath(a, 1, 1);
        print(a);
    }
  • 相关阅读:
    python3第六天
    python3第五天
    python3第四天
    python3 第三天
    python3第二天
    python3(2)
    python3(1)
    网络通信 & 初识socket
    python中包的语法
    模块语法
  • 原文地址:https://www.cnblogs.com/oldfish123/p/13685985.html
Copyright © 2020-2023  润新知