美文网首页
(二维dp)741. 摘樱桃

(二维dp)741. 摘樱桃

作者: 来到了没有知识的荒原 | 来源:发表于2021-09-29 09:50 被阅读0次

741. 摘樱桃

走到终点再原路返回,可以转换为:两个人同时走,两人会同步保持在一条对角线上,这条对角线就是x+y=sum

class Solution {
 public:
  bool inboard(int n, int x, int y) { return x >= 0 && x < n && y >= 0 && y < n; }
  int cherryPickup(vector<vector<int>>& grid) {
    int n = grid.size();
    int dp[n + 10][n + 10][2 * n];
    memset(dp, 0x80, sizeof(dp));  //-2139062144, 作用相当于 INT_MIN
    dp[0][0][0] = grid[0][0];
    for (int sum = 0; sum < 2 * n - 1; sum++) {
      for (int x1 = 0; x1 <= sum; x1++) {
        int y1 = sum - x1;
        if (!inboard(n, x1, y1)) continue;
        for (int x2 = 0; x2 <= x1; x2++) {  // 第二个不需要走到第一个下面,最多走重合
          int y2 = sum - x2;
          if (!inboard(n, x2, y2)) continue;
          int cur = dp[x1][x2][sum];

          for (int k1 = 0; k1 < 2; k1++) {
            for (int k2 = 0; k2 < 2; k2++) {
              int nx1 = x1 + k1, ny1 = y1 + 1 - k1, nx2 = x2 + k2,
                  ny2 = y2 + 1 - k2;
              if (!inboard(n, nx1, ny1) || !inboard(n, nx2, ny2)) continue;
              if (grid[nx1][ny1] != -1 && grid[nx2][ny2] != -1) {
                int gain = grid[nx1][ny1] + grid[nx2][ny2];
                if (nx1 == nx2 && ny1 == ny2) gain = gain ? 1 : 0;
                dp[nx1][nx2][sum + 1] = max(dp[nx1][nx2][sum + 1], cur + gain);
              }
            }
          }
        }
      }
    }
    int res = dp[n - 1][n - 1][2 * n - 2];
    if (res < -1e9) return 0;
    return res;
  }
};

相关文章

  • (二维dp)741. 摘樱桃

    741. 摘樱桃[https://leetcode-cn.com/problems/cherry-pickup/]...

  • 2019.5.3

    摘樱桃

  • 惬意天

    樱桃沟里樱桃多, 车多,人更多, 你摘,我摘,大家摘, 一起忙采摘。 一颗颗樱桃似玛瑙, 一张张笑脸赛桃花。 樱桃...

  • 摘樱桃

    周六因为写完了作业,所以爸爸要带我去姑姑家,我非常高兴。然后和爸爸开车带着我和弟弟妈妈起去姑姑家去摘樱桃。 ...

  • 摘樱桃

    今天,天气晴朗,阳光明媚,我们大家一起去摘樱桃。 我们来到樱桃园,我看到一棵棵绿油油的樱桃树上,结满了...

  • 摘樱桃

    今天周六,天气不错,爸爸说要带我去摘樱桃,我非常高兴。急忙写完作业,然后和爸爸开车去接我姑姑一块儿去...

  • 摘樱桃                            

    今天,叔叔邀请我们去摘樱桃,我非常高兴,因为我尝试了一次自己亲手摘樱桃。 我们开着车,还有我的小伙伴们,一...

  • 摘樱桃

    今天去Brentwood摘樱桃咯,一边摘一边吃, 最后带了八斤出去,$3.5一磅。 后来中午去Fremont出了一...

  • 摘樱桃

    今天天气不错,我和几个朋友一起去逛公园。 我们去一个叫五湖的公园,那真是很大、很好看的,每一...

  • 摘樱桃

    2017年4月22日 星期六 晴 夫君昨晚到家已经快十一点了,出差在外,舟车劳顿,可从来不会守着我抱怨什么,就冲这...

网友评论

      本文标题:(二维dp)741. 摘樱桃

      本文链接:https://www.haomeiwen.com/subject/uemknltx.html