当前位置: 首页 > news >正文

未备案网站加速第三方做的网站不给源代码

未备案网站加速,第三方做的网站不给源代码,分类信息网,表单大师 做网站三个小朋友收集水果问题#xff1a;最大水果收集路径 问题描述 有一个游戏#xff0c;游戏由 n x n 个房间网格状排布组成。给定一个大小为 n x n 的二维整数数组 fruits#xff0c;其中 fruits[i][j] 表示房间 (i, j) 中的水果数目。 游戏开始时#xff0c;三个小朋友分…三个小朋友收集水果问题最大水果收集路径 问题描述 有一个游戏游戏由 n x n 个房间网格状排布组成。给定一个大小为 n x n 的二维整数数组 fruits其中 fruits[i][j] 表示房间 (i, j) 中的水果数目。 游戏开始时三个小朋友分别从角落房间 (0, 0)(0, n - 1) 和 (n - 1, 0) 出发。每个小朋友都会恰好移动 n - 1 次并到达房间 (n - 1, n - 1)。不同小朋友的移动规则如下 第一个小朋友 从 (0, 0) 出发每次可以选择移动到 (i 1, j 1)、(i 1, j) 或 (i, j 1)如果存在。第二个小朋友 从 (0, n - 1) 出发每次可以选择移动到 (i 1, j - 1)、(i 1, j) 或 (i 1, j 1)如果存在。第三个小朋友 从 (n - 1, 0) 出发每次可以选择移动到 (i - 1, j 1)、(i, j 1) 或 (i 1, j 1)如果存在。 每个小朋友到达一个房间时会收集该房间的所有水果。如果两个或更多小朋友进入同一个房间则只有一个小朋友能收集该房间的水果且该房间中的水果在收集后消失。 请你返回三个小朋友总共最多可以收集多少个水果。 示例 示例 1 输入 fruits [[1, 2, 3, 4], [5, 6, 8, 7], [9, 10, 11, 12], [13, 14, 15, 16]]输出 100解释 第 1 个小朋友绿色的移动路径为 (0,0) - (1,1) - (2,2) - (3, 3)。 第 2 个小朋友红色的移动路径为 (0,3) - (1,2) - (2,3) - (3, 3)。 第 3 个小朋友蓝色的移动路径为 (3,0) - (3,1) - (3,2) - (3,3)。 他们总共能收集 1 6 11 1 4 8 12 13 14 15 100 个水果。 示例 2 输入 fruits [[1, 1], [1, 1]]输出 4解释 第 1 个小朋友的移动路径为 (0,0) - (1,1)。 第 2 个小朋友的移动路径为 (0,1) - (1,1)。 第 3 个小朋友的移动路径为 (1,0) - (1,1)。 他们总共能收集 1 1 1 1 4 个水果。 思路分析 了解移动规则 第一个小朋友的路径是沿对角线移动的。因为每个格子只能被收集一次第二个小朋友的最优路径应该是从 (0, n-1) 移动到 (n-2, n-1)并且不能越过主对角线。因此最优解中第二个小朋友一定不会碰到主对角线。 需要特别处理如何从 (n-2, n-1) 出发并且确保最终能精确到达 (0, n-1)。每次规划路径时我们需要确保每个小朋友的路径不会重叠并且他们的水果收集路径最大化。边界条件处理 对于第二个小朋友最关键的是每次的 j 必须满足 j n - 1 - i确保路径不会越过对角线。 通过递归和记忆化搜索的方式计算每个小朋友的最大水果收集数量。动态规划实现 通过递归和记忆化搜索我们可以解决这个问题。下面是实现代码 class Solution { public:int maxCollectedFruits(vectorvectorint fruits) {int n fruits.size(), res 0;vectorvectorint memo(n, vectorint(n, -1)); // 记忆化数组// 记忆化搜索函数functionint(int, int) dfs [](int r, int c) - int {if (r 0) return fruits[r][c];if (memo[r][c] ! -1) return memo[r][c]; // 如果已计算直接返回for (int i -1; i 1; i) {int y c i;if (y n || y n - 1 - (r - 1)) continue; // 确保列范围合法memo[r][c] max(memo[r][c], dfs(r - 1, y) fruits[r][c]);}return memo[r][c];};// 计算第一个小朋友的收集水果for (int i 0; i n; i) {res fruits[i][i];}res dfs(n - 2, n - 1); // 从下往上走第二个小朋友的收集路径// 将下三角形的数据填充到上三角for (int i 0; i n; i) {for (int j i; j n; j) {fruits[i][j] fruits[j][i];}}// 重置memo数组并计算第三个小朋友的收集路径std::fill_n(memo.begin(), n, std::vectorint(n, -1));res dfs(n - 2, n - 1);return res;} };思路总结 记忆化搜索通过递归的方式计算每个小朋友的最大水果收集数量并利用记忆化缓存避免重复计算。 路径规划根据每个小朋友的移动规则避免路径重叠并确保每个小朋友能够最大化收集水果。 矩阵转置对于第二个小朋友和第三个小朋友可以通过对矩阵进行转置操作简化计算。
http://www.dnsts.com.cn/news/178550.html

相关文章:

  • 外贸soho建网站网上服装商城网站建设方案策划
  • 洪洞网站建设企查查询官网入口
  • 网站被收录的过程wordpress子分类模板
  • 网站续费合同书哪个网站可以做兼职笔译
  • 网站建设公司不给ftp网站建设公开
  • 河北城乡建设厅网站显示不全后端和前端哪个是青春饭
  • 网站空间送数据库中文wordpress主题下载地址
  • 免费建单页网站iis7.5 添加网站
  • 丹阳市住房和城乡建设局网站专业网站运营
  • 服务器可以放几个网站养生网站模板下载
  • 网站建设管理员角色设置网站维护学习
  • jsp网站开发实例.百度网盘怎样申请微信小程序卖货
  • 最专业微网站建设公司优秀企业网站设计制作
  • 宁波网站建设高端内容平台
  • 京东怎么做轮播图链接网站安徽淮北发现一例
  • 政务服务大厅网站建设方案huang色网站
  • 品牌网站制作公司哪家好北京广告有限公司
  • 惠州专业做网站公司绍兴网站seo
  • 网站产品策划服务器网站跳转怎么做的
  • 驻马店住房和城乡建设厅网站怎么样可以做网站
  • 佛山网站建设公司如何组建站长工具 站长之家
  • 网站数据库如何建设东莞市一箭天网络科技有限公司
  • 高端企业网站建设制作广东莞业工程设计有限公司
  • 营销型网站建设风格设定包括哪些方面?公司建站后还要录入网页吗
  • 个人网站示例做电脑桌面网站
  • 网站设计怎么做图片透明度中交路桥建设有限公司官网
  • 无锡正规网站建设wordpress添加数据库
  • 如何进入网站后台 被黑湖州建设局网站
  • 二手网站怎么做wordpress 二级菜单
  • 网站开发的硬件设备网站建设与管理专业是什么