LintCode 不同的路径
2017-11-03 19:13
211 查看
1.描述
有一个机器人的位于一个 m × n 个网格左上角。
机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。
问有多少条不同的路径?
注意事项
n和m均不超过100
样例
给出 m =
给出 m =
2.分析
这个相比于《LintCode 最小路径和》是简化了一些,只需要把所有的路径都存入dp数组中,不需要再判断找路径短的路径。
3.代码
class Solution {
public:
/*
* @param m: positive integer (1 <= m <= 100)
* @param n: positive integer (1 <= n <= 100)
* @return: An integer
*/
int uniquePaths(int m, int n) {
// write your code here
int dp[105][105];//dp中存储到ij的路径和
memset(dp,0,sizeof(dp));//初始化为0
dp[m]
=1;
for(int i=m;i>=0;i--)
{
for(int j=n;j>=0;j--)
{
if(i<m)
dp[i][j]+=dp[i+1][j];
if(j<n)
dp[i][j]+=dp[i][j+1];
}
}
return dp[1][1];
}
};
4.总结
状态转移方程很简单,当可以向右走时dp[i][j]+=dp[i][j+1],当可以向下走时dp[i][j]+=dp[i+1][j]。
有一个机器人的位于一个 m × n 个网格左上角。
机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。
问有多少条不同的路径?
注意事项
n和m均不超过100
样例
给出 m =
3和 n =
3, 返回
6.
给出 m =
4和 n =
5, 返回
35.
2.分析
这个相比于《LintCode 最小路径和》是简化了一些,只需要把所有的路径都存入dp数组中,不需要再判断找路径短的路径。
3.代码
class Solution {
public:
/*
* @param m: positive integer (1 <= m <= 100)
* @param n: positive integer (1 <= n <= 100)
* @return: An integer
*/
int uniquePaths(int m, int n) {
// write your code here
int dp[105][105];//dp中存储到ij的路径和
memset(dp,0,sizeof(dp));//初始化为0
dp[m]
=1;
for(int i=m;i>=0;i--)
{
for(int j=n;j>=0;j--)
{
if(i<m)
dp[i][j]+=dp[i+1][j];
if(j<n)
dp[i][j]+=dp[i][j+1];
}
}
return dp[1][1];
}
};
4.总结
状态转移方程很简单,当可以向右走时dp[i][j]+=dp[i][j+1],当可以向下走时dp[i][j]+=dp[i+1][j]。
相关文章推荐
- 不同的路径 -LintCode
- lintcode-114-不同的路径
- Lintcode 115.不同的路径2
- 不同的路径-lintcode
- lintcode-115-不同的路径 II
- LintCode(easy)不同的路径
- 不同的路径 II -LintCode
- python_lintcode_697Check Sum of Square Numbers_114不同的路径
- LintCode 不同的路径II
- LintCode:不同的路径II
- LintCode_不同的路径
- LintCode :不同的路径
- Lintcode-动态规划-不同路径
- LintCode 不同的路径 II
- lintcode:不同的路径—解析
- 不同路径-LintCode
- lintCode(114)——不同的路径
- LintCode 不同的路径
- python_lintcode_115不同的路径 II_112删除排序链表中的重复元素
- lintcode(115)不同的路径2