且看三水 2024-01-19 12:45 采纳率: 25%
浏览 4
已结题

力扣路径问题个人思路不解


int a=0,b=0,c=0,d=0;
int jisuan(int a,int b,int m,int n)
{
    if(a<m) {c=jisuan(a+1,b,m,n);}else{c=0;}
    if(b<n) {d=jisuan(a,b+1,m,n);}else{d=0;}
    if(a==m&&b==n)
    {
        return 1;
    }
    else{
        return c+d;
    }
    
}
int uniquePaths(int m, int n) {
    return jisuan(0,0,m,n);
}

img

  • 写回答

3条回答 默认 最新

  • 晚风不度 2024-01-19 13:50
    关注

    只是递归的话很简单

    int uniquePaths(int m, int n) {
        if(m == 1 || n == 1)
            return 1;
        return uniquePaths(m - 1, n) + uniquePaths(m, n - 1);
    }
    

    但是遇见mn比较大的用例会超时,所以再加上记忆化搜索

    int inPos(int x, int y, int **pos)
    {
        if(pos[x][y])
        {
            return pos[x][y];
        }
    
        if(x == 0 || y == 0)
            return 1;
        pos[x][y] = inPos(x - 1, y, pos) + inPos(x, y - 1, pos);
    
        return pos[x][y];
    }
    
    int uniquePaths(int m, int n) {
        int** pos = (int**)malloc((m) * sizeof(int*));
        for (int i = 0; i < m; i++) {
            pos[i] = (int*)malloc((n) * sizeof(int));
            memset(pos[i], 0, (n) * sizeof(int));
        }
    
        return inPos(m - 1, n - 1, pos); 
    }
    

    当然,这里没有回收pos数组,单纯的懒得写而已

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 已采纳回答 1月21日
  • 创建了问题 1月19日

悬赏问题

  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 arbotix没有/cmd_vel话题
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据
  • ¥15 用C语言怎么判断字符串的输入是否符合设定?