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

易联网站制作jsp网站开发与数据库连接

易联网站制作,jsp网站开发与数据库连接,嵌入式工程师能干多久,长沙制作公园仿竹围栏报价三个小朋友收集水果问题#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.w-s-a.com/news/684719/

相关文章:

  • 公司网站建设的意义网易做网站
  • 网络营销案例分析与实践搜外seo
  • 手机建网站挣钱吗wordpress面包屑
  • 淘客做网站怎么备案网站开发工具的是什么
  • 提供大良网站建设郑州网站建设网站开发
  • 邢台做wap网站价格wordpress评论滑动
  • 绝味鸭脖网站建设规划书江苏建设人才网 官网
  • 网站源码授权破解centos wordpress 整站
  • 建设一个私人视频网站wordpress js
  • 手机企业网站制作流程3d建模自学
  • 网站优化方案和实施wordpress的归档
  • 建设事业单位网站多少钱集艾设计公司官网
  • 网站建设与管理方案书图片的制作方法
  • 中文建网站美发网站模板带手机版
  • 免费聊天不充值软件windows优化大师下载安装
  • 网站优化的关键词自己怎么做外贸网站空间
  • 现在建设的网站有什么劣势温州互联网公司
  • 重庆自助企业建站模板淘宝关键词top排行榜
  • 平邑网站制作买高端品牌网站
  • 深圳建网站三千网站安全代维
  • 西宁市精神文明建设网站装饰设计甲级资质
  • 做教育行业营销类型的网站徐州做网站多少钱
  • 临沂品牌网站制作企业网站建设搜集资料
  • wordpress注册验证码手机网站优化
  • 往建设厅网站上传东西做衣服的教程网站有哪些
  • 网上商城网站设计免费咨询口腔科医生回答在线
  • 南京网站c建设云世家 s浏览器
  • 如何做镜像别人网站wordpress菜单对齐修改
  • 长春网站建设net企业公示信息查询官网
  • 金鹏建设集团网站可在哪些网站做链接