走方格-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;
        
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章