[Leetcode]-Unique Paths

来源:互联网 发布:苏州相城区淘宝培训 编辑:程序博客网 时间:2024/05/17 23:18

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?
这里写图片描述
题目:从左上角到右下角总共有几种走法?只能向左或者下走。
思路:动态规划,转台转移方程为
path[i][j] = path[i-1][j] + path[i][j-1]; path[i][0] = 1; path[0][i] = 1;
这里写图片描述

int uniquePaths(int m, int n) {    /*int** path =(int**)malloc(sizeof(int*) * m);    for(int i=0;i<m;i++)        path[i] = (int*)malloc(sizeof(int)*n);    for(int i=0;i<m;i++)        path[i][0] = 1;    for(int i=0;i<n;i++)        path[0][i] = 1;    for(int i=1;i<m;i++)        for(int j=1;j<n;j++)            path[i][j] = path[i-1][j] + path[i][j-1];    int r = path[m-1][n-1];    for(int i=0;i<m;i++)        free(path[i]);    free(path);    return r;*/ }

方案二:同样原理只是O(space)= n

int uniquePaths(int m, int n) {int *r = (int*)malloc(sizeof(int)*n);    for(int i=0;i<m;i++)        for(int j=0;j<n;j++)        {            if(0==j || 0 == i)                r[j] = 1;            else                r[j] = r[j] + r[j-1];        }    int r1 = r[n-1];    free(r);    return r1;}
0 0
原创粉丝点击