zoukankan      html  css  js  c++  java
  • leetcode 576. Out of Boundary Paths

    leetcode 576

    题意大概就是在一个m*n的网格中,在坐标为[i,j]的网格上放一个物体,在规定时间N(t<=N)中,有多少种方法把物体移动出去。物体只能上下左右移动,一次移动一格,移动一次为一个单位时间。

    求总的个数,并且每个N都是来自四个方向的N-1之和。很明显用dp做的。还是比较经典的一个dp题把。。

     1 class Solution {
     2 public:
     3     int findPaths(int m, int n, int N, int i, int j) {
     4         int dp[51][50][50];
     5         for(int Ni=0;Ni<=N;Ni++)
     6           for(int mi=0;mi<m;mi++)
     7             for(int ni=0;ni<n;ni++){
     8                 if(!Ni) {dp[Ni][mi][ni]==0; continue;}
     9                 dp[Ni][mi][ni]=((long long) (!mi?1:dp[Ni-1][mi-1][ni])+(mi==m-1?1:dp[Ni-1][mi+1][ni])+
    10                                             (!ni?1:dp[Ni-1][mi][ni-1])+(ni==n-1?1:dp[Ni-1][mi][ni+1]))%1000000007;
    11             }
    12         return dp[N][i][j];
    13     }
    14 };

    要注意的是来自边界外面的个数全都为1,结合图像看一下就明白了。

    有一个地方比较有意思,就是我看Sloution的答案,他的Sloution中没有初始Ni==0的情况,我想这样不是不能直接用嘛,因为这时候数组元素不是任意值嘛。。后来我实验了一下。。

     int dp[51][50][50]={};

    原来这样可以直接初始化为0。。

    学到了学到了。。比较特别。。

  • 相关阅读:
    jQuery获取各种标签的文本和value值
    python中base64编码与解码
    Django 的 slug url 正则匹配
    JavaScript base64 加密解密
    HTML引入外部JS文件
    CSS样式的引入方式
    Django 配置404页面
    selenium 基本操作
    python 启动pydoc查看文档
    selenium webdriver
  • 原文地址:https://www.cnblogs.com/weedboy/p/6820578.html
Copyright © 2011-2022 走看看