[关闭]
@snuffles 2019-04-12T21:49:53.000000Z 字数 609 阅读 878

L62 不同路径

动态规划


一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?

解:

  1. int uniquePaths(int m, int n) {
  2. //dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
  3. vector<int> dp(n,1);
  4. for(int i=1;i<m;i++){
  5. for(int j=1;j<n;j++){
  6. dp[j] += dp[j-1];
  7. }
  8. }
  9. return dp[n-1];
  10. }
  1. class Solution {
  2. public:
  3. //动态规划
  4. int uniquePaths(int m, int n) {
  5. int dp[m][n]={0};
  6. for(int i=0;i<m;i++){
  7. for(int j=0;j<n;j++){
  8. if(i==0 ||j==0){
  9. dp[i][j]=1;
  10. }
  11. else{
  12. dp[i][j]=dp[i-1][j]+dp[i][j-1];
  13. }
  14. }
  15. }
  16. return dp[m-1][n-1];
  17. }
  18. //组合 //相乘会溢出,相除的话不准确
  19. // int uniquePaths(int m, int n) {
  20. // double res=1.0;
  21. // int j=m-1;
  22. // int i=m+n-2;
  23. // while(j>=1){
  24. // res = res*i/j;
  25. // i--;
  26. // j--;
  27. // }
  28. // return int(res);
  29. // }
  30. };
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注