您的位置:首页 > 其它

LintCode 不同的路径

2017-11-03 19:13 211 查看
1.描述

有一个机器人的位于一个 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]。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: