#Leetcode# 62. Unique Paths

https://leetcode.com/problems/unique-paths/

 

A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).

The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).

How many possible unique paths are there?


Above is a 7 x 3 grid. How many possible unique paths are there?

Note: m and n will be at most 100.

Example 1:

Input: m = 3, n = 2
Output: 3
Explanation:
From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
1. Right -> Right -> Down
2. Right -> Down -> Right
3. Down -> Right -> Right

Example 2:

Input: m = 7, n = 3
Output: 28

题解:$dp$ 

AC 代码:

class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<int> dp(n, 1);
        for(int i = 1; i < m; i ++) {
            for(int j = 1; j < n; j ++)
                dp[j] += dp[j - 1];
        }
        return dp[n - 1];
    }
};

 

另一个代码:

#include <bits/stdc++.h>
using namespace std;

int n, m;
int dp[1010][1010];

int main() {
    scanf("%d%d", &n, &m);
    for(int i = 0; i < n; i ++) {
        for(int j = 0; j < m; j ++) {
            if(i == 0 || j == 0)
                dp[i][j] = 1;
            else
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
        }

    }

    int ans = dp[n - 1][m - 1];
    printf("%d\n", ans);
    return 0;
}

  

  

posted @ 2018-11-22 18:03  丧心病狂工科女  阅读(130)  评论(0编辑  收藏  举报