LeetCode Unique Paths (简单DP)

 

题意:

  给出一个m*n的矩阵,robot要从[1][1]走到[m][n],每次只能往下/右走,问有多少种走法?

 

 

思路:

  DP的经典问题。先将[1][1]设为1,然后两种走法就是分别用[i][j]去更新[i+1][j]和[i][j+1]。

  观察一下数组的更新次序就可以知道,这很像完全背包的更新方式,那么就可以用一维数组就行了。更新方式从左到右就行了。

  由于这是DP题,就没有必要去研究数学公式了(涉及等差数列求和)。

 

 

 1 class Solution {
 2 public:
 3     int uniquePaths(int m, int n) {
 4         vector<int> p(n,1);
 5         for(int i=1; i<m; i++)
 6             for(int j=0; j+1<n; j++)
 7                 p[j+1]+=p[j];
 8         return p[n-1];
 9     }
10 };
AC代码

 

posted @ 2015-10-29 23:01  xcw0754  阅读(106)  评论(0编辑  收藏  举报