走方格-dp

题目描述

在这里插入图片描述

思路分析

(1)确定状态

最后一步:
在这里插入图片描述
子问题:
在这里插入图片描述

(2)转移方程

在这里插入图片描述

(3)初始条件和边界情况

在这里插入图片描述

(4)计算顺序

在这里插入图片描述

C++实现

class Solution {
public:
    // 使用动态规划解题,能够到达每个格子,只能是从他的上方或者左侧到达
    int uniquePaths(int m, int n) {
        // 建立dp
       // vector<vector<int>>dp(m, vector<int>(n, 0));
       int[][] dp = new int[m][n];	//只用到0、1、2……m-1,故数组开m,不是m+1
        
        for(int i=0; i<m; ++i){
            for(int j=0; j<n; ++j)
            	if (i == 0 || j == 0)	//初始化
            		dp[i][j] = 1;
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
        }
        
        return dp[m-1][n-1];  
        delete[][] dp;
    }
};

	//单独初始化
	// dp[0][0] = 1;	   
       // for(int j=0; j<n; ++j)	// 填充第一行(边界)
        //    dp[0][j] = 1;
       // for(int i=0; i<m; ++i)	// 填充第一列(边界)
       //     dp[i][0] = 1;
        
发布了65 篇原创文章 · 获赞 25 · 访问量 2607

猜你喜欢

转载自blog.csdn.net/weixin_43892514/article/details/104834936