当前位置: 首页 > news >正文

不同路径

不同路径

思路:

法一:动态规划

    const int N = 110;
class Solution {    int dp[N][N];//dp[i][j]:从起点走到 i j的路径个数。 public:int uniquePaths(int m, int n) {for(int i=1;i<=n;i++){dp[1][i]=1;} for(int i=1;i<=m;i++) dp[i][1]=1;for(int i=2;i<=m;i++){for(int j=2;j<=n;j++){dp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[m][n];}
};

滚动数组:

    const int N = 110;
class Solution {    int dp[N];//dp[i][j]:从起点走到 i j的路径个数。 public:int uniquePaths(int m, int n) {for(int i=1;i<=n;i++){dp[i]=1;} for(int i=2;i<=m;i++){for(int j=2;j<=n;j++){dp[j]+=dp[j-1];}}return dp[n];}
};

法二:组合数学

        从左上角到右下角的过程中,我们需要移动 m+n−2 次,其中有 m−1 次向下移动,n−1 次向右移动。因此路径的总数,就等于从 m+n−2 次移动中选择 m−1 次向下移动的方案数

class Solution {
public:int uniquePaths(int m, int n) {long long ans = 1;for (int x = n, y = 1; y < m; ++x, ++y) {ans = ans * x / y;}return ans;}
};


http://www.mrgr.cn/news/3747.html

相关文章:

  • 06、stm32 引脚输入
  • 游戏开发设计模式概况
  • 如何在不破产的情况下训练AI模型
  • 开发 LLM 支持的应用程序:Azure 上的 Llama 2(5/n)
  • 算法的学习笔记—把二叉树打印成多行(牛客JZ78)
  • 微服务健康检查:如何通过Eureka实现服务自动剔除与恢复
  • pinctl 和 gpio子系统驱动
  • Nginx高级部分
  • Unity动画模块 之 3D模型导入基础设置 Rig页签
  • nginx 配置允许跨域
  • wps题注为表格或图片编号
  • 自定义xxx-spring-boot-starter
  • 低安卓版本页面空白适配
  • Spring Boot 实战:集成 Apache Kafka 及注意事项
  • 【22-54】创建者模式(详解五大模式)
  • gligen 训练自己的数据
  • I2C学习:上拉电阻选取
  • 密码学之哈希算法
  • 總結熱力學_3
  • Vscode——如何实现 Ctrl+鼠标左键 跳转函数内部的方法