• Unique paths <leetcode>


    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?

    思路:首先想到的是广度优先搜索(分支限界),方法一就是,但是超时,方法二是动态规划,accepted

     1 struct node
     2 {
     3     int x;
     4     int y;
     5 };
     6 class Solution {
     7 public:
     8     int total_path;
     9     int uniquePaths(int m, int n) {
    10         total_path=0;
    11         list<node>  ls;
    12         node orign;
    13         orign.x=1;
    14         orign.y=1;
    15         ls.push_back(orign);
    16         while(ls.size()!=0)
    17         {
    18             node temp=ls.front();
    19             ls.pop_front();
    20             if(temp.x+1<=n)
    21             {
    22                 node p;
    23                 p.x=temp.x+1;
    24                 p.y=temp.y;
    25                 ls.push_back(p);
    26                 if(temp.x+1==n&&temp.y==m)
    27                 {
    28                     total_path++;
    29                 }
    30             }
    31             if(temp.y+1<=m)
    32             {
    33                 node p;
    34                 p.x=temp.x;
    35                 p.y=temp.y+1;
    36                 ls.push_back(p);
    37                 if(temp.x==n&&temp.y+1==m)
    38                 {
    39                     total_path++;
    40                 }
    41             }
    42         }
    43         return total_path;
    44     }
    45 };

    方法二:动态规划

     1 class Solution {
     2 public:
     3     int uniquePaths(int m, int n) {
     4         int f[m][n];
     5         memset(f,0,sizeof(int)*m*n);
     6         
     7         for(int i=0;i<m;i++)
     8         {
     9             f[i][0]=1;
    10         }
    11         for(int i=0;i<n;i++)
    12         {
    13             f[0][i]=1;
    14         }
    15         
    16         for(int i=1;i<m;i++)
    17         {
    18             for(int j=1;j<n;j++)
    19             {
    20                 f[i][j]=f[i-1][j]+f[i][j-1];
    21             }
    22         }
    23         return f[m-1][n-1];
    24     }
    25 };
  • 相关阅读:
    Spring__SpringMVC__Mybatis整合
    Mybatis__延迟加载
    mybatis__关联关系__1对1,1对多
    动态SQL基本语句用法
    log4j的使用 && slf4j简单介绍
    Mybatis接口与映射文件
    ORM简介 && MyBatis和Hibernate的不同 && 动态代理简单实现Mybatis基本使用
    20169207《linux内核原理与分析》第二周作业
    关于Linux学习中的问题和体会
    [algothrim]URL相似度计算的思考
  • 原文地址:https://www.cnblogs.com/sqxw/p/3954094.html
Copyright © 2020-2023  润新知