• 题目:迷宫路径


    题目描述

    猩猩来到一个点(1,1),想吃右下角(N,N)的香蕉,规定只能往下走或者往右走,试问有多少种走法?

    输入格式

    第一行为一个整数N(N<=20)
    以下是一个N*N的正方形表示迷宫

    输出格式

    仅有一个数,表示路径总数,如果走不通,则输出0

    题解:———————————————————————————————————————————————————

    本题有两种解法,第一种就是dfs,但我以身试法,有一个点不能过,超时!但对于新手来说,这种方法是不得不掌握的。

    DFS代码实现:

    #include<iostream>
    using namespace std;

    int total=0,n,map[21][21];

    void dfs(int p,int q){
         if(q==n&&p==n) {total++;return ;}
        
         if(p+1<=n&&q<=n&&map[p+1][q]==0)
         dfs(p+1,q);

         if(q+1<=n&&p<=n&&map[p][q+1]==0)
         dfs(p,q+1);  
         }

    int main()
    {
        int i,j,k;
        cin>>n;
        for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        cin>>map[i][j];
        dfs(1,1);
       
        cout<<total<<endl;
        return 0;
       
        }

    解法二是递推,吧杨辉三角改改就行了。

    代码实现:

    #include<iostream>
    using namespace std;

    int n,map[21][21],f[21][21];

    int main()
    {
        int i,j,k;
        cin>>n;
        for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        cin>>map[i][j];
       
        if(map[1][1]==1) {cout<<0<<endl;return 0;}
       
        memset(f,0,sizeof(f));
        f[1][1]=1;
     
        for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
        if(map[i][j]!=1) if(i!=1||j!=1) f[i][j]=f[i-1][j]+f[i][j-1];
       
        cout<<f[n][n]<<endl;
       
        system("pause");
        return 0;
       
        }

  • 相关阅读:
    postman:模拟发送一个需要 cookie 认证的请求
    TCP/IP体系结构-测试人员必须理解的
    软件测试基本方法_之验收测试
    软件测试基本方法_之集成测试和系统测试
    聊天类APP功能测试点
    软件测试中的测试数据准备
    兼容性测试
    测试面试题集合
    Python3连接数据库,读取数据
    Python3读取Excel数据
  • 原文地址:https://www.cnblogs.com/noip/p/2290776.html
Copyright © 2020-2023  润新知