美文网首页
动态规划

动态规划

作者: 知识分享share | 来源:发表于2020-07-28 09:50 被阅读0次

    动态规划

    1、划分状态,划分子问题
    2、状态表示,让计算机理解子问题 f[i][3]
    3、状态转移,父问题如何由子问题推导出来
    4、确定边界,确定初始状态,最小子问题,最终状态

    • 定义数组元素的含义
    • 找出数组元素间的关系式
    • 找出初始条件
    青蛙跳台接
    int f(int n){
        if(n<=1)
            return n;
        int dp[n+1];
        dp[0]=0;
        dp[1]=1;
        for(int i=2;i<=n;i++){
            dp[i]=dp[i-1]+dp[i-2];
        }
        return dp[n];
    }
    
    机器人走棋盘
    int uniquePaths(int m,int n){
        if (m <= 0 || n <= 0) {
            return 0;
        }
        int dp[m][n];
        for(int i = 0; i < m; i++){
          dp[i][0] = 1;
        }
        for(int i = 0; i < n; i++){
          dp[0][i] = 1;
        }
        for (int i = 1; i < m; i++) {
            for (int j = 1; j < n; j++) {
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
    

    相关文章

      网友评论

          本文标题:动态规划

          本文链接:https://www.haomeiwen.com/subject/emgxrktx.html