leetcode:576. 出界的路径数(dp---二维向外面加一层统计个数)

题目:

在这里插入图片描述

分析:

直接使用题解的思路和代码:

      int MOD = 1000000007;
 if (N == 0) { return 0; }
 //初始化三维的向量 
 vector<vector<vector<unsigned long long int>>> dp(m + 2, vector<vector<unsigned long long int>>(n + 2, vector<unsigned long long int>(N + 1, 0)));
 for (int i = 0; i <= m + 1; i++) {
  dp[i][0][0] = 1;
  dp[i][n + 1][0] = 1;
 }
 for (int i = 0; i <= n + 1; i++) {
  dp[0][i][0] = 1;
  dp[m + 1][i][0] = 1;
 }
 for (int k = 1; k <= N; k++) {
  for (int i = 1; i <= m; i++) {
   for (int j = 1; j <= n; j++) {
    dp[i][j][k] = (dp[i - 1][j][k - 1] + dp[i + 1][j][k - 1] + \
        dp[i][j - 1][k - 1] + dp[i][j + 1][k - 1]) % MOD;
   }
  }
 }
 int sum = 0;
 for (int k = 1; k <= N; k++) {
  sum = (sum + dp[i + 1][j + 1][k]) % MOD;
 }
 return sum;

应该是第一次遇到这样的dp吧,向外围加一层,然后1,2,3到N步,。

猜你喜欢

转载自blog.csdn.net/weixin_42721412/article/details/106216448
今日推荐