参考链接
http://www.cnblogs.com/remlostime/archive/2012/11/15/2772263.html
题目描述
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 3 x 7 grid. How many possible unique paths are there?
Note: m and n will be at most 100.
题目分析
动态规划
开一个f[m][n]的数组,f[i][j] = f[i-1][j] + f[i][j-1],空间时间复杂度O(m*n)。用滚动数组空间复杂度可降为O(n)
代码示例
/*
编译环境CFree 5.0
博客地址:http://blog.youkuaiyun.com/Snowwolf_Yang
*/
#include
#include
using namespace std;
#if 0//超时
class Solution {
public:
int uniquePaths(int m, int n) {
int sum = 0;
uniquePathsCore(m,n,0,0,sum);
return sum;
}
void uniquePathsCore(int m, int n, int i, int j, int &sum)
{
if(i == m-1 && j == n-1)
{
sum++;
//printf("(%d,%d) ",i,j);
//printf("end\n");
return;
}
if(j
/*
编译环境CFree 5.0
博客地址:http://blog.youkuaiyun.com/Snowwolf_Yang
*/
#include
#include
using namespace std;
#if 0//超时
class Solution {
public:
int uniquePaths(int m, int n) {
int sum = 0;
uniquePathsCore(m,n,0,0,sum);
return sum;
}
void uniquePathsCore(int m, int n, int i, int j, int &sum)
{
if(i == m-1 && j == n-1)
{
sum++;
//printf("(%d,%d) ",i,j);
//printf("end\n");
return;
}
if(j
推荐学习C++的资料
C++标准函数库
在线C++API查询
vector使用方法