题目描述
一个棋盘有n行m列,从棋盘的左上角走到右下角,每次只能往右走一步,或者往下走一步,总共有多少种走法?
Input: m = 3, n = 2
Output: 3
总共有三种走法
1.右 -> 右 -> 下
2.右 -> 下 -> 右
3.下 -> 右 -> 右
解题思路
假设将某个格子作为终点,该格子位于第i行第j列,走法总数 = 终点上方格子的走法总数 + 终点左边格子的走法总数。原问题的解包含子问题的解,符合最优子结构的定义,典型的动态规划问题。
写成方程:
sij=sij−1+si−1j
解题代码
class Solution
{
public:
int maxSize = 200;
int s[200][200];
int uniquePaths(int m, int n)
{
for (int i = 1; i <= m; i++)
{
s[1][i] = 1;
}
for (int j = 1; j <= n; j++)
{
s[j][1] = 1;
}
//填表:从左到右,从上到下
for (int i = 2; i <= n; i++)
{
for (int j = 2; j <= m; j++)
{
s[i][j] = s[i - 1][j] + s[i][j - 1];
//s[i - 1][j] -- 左
//s[i][j - 1] -- 上
}
}
return s[n][m];
}
};
LeetCode链接:LeetCode 62. Unique Paths
标签:200,格子,走法,int,笔记,算法,sij,棋盘 来源: https://blog.csdn.net/MASILEJFOAISEGJIAE/article/details/89739396
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。