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

网站运营方法百度竞价app

网站运营方法,百度竞价app,动漫一级a做爰片免费网站,信誉好的广州做网站学习动态规划|不同路径、最小路径和、打家劫舍、打家劫舍iii 62 不同路径 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量dp[i][j] dp[i-1][j] dp[i][j-1] import java.util.Arrays;/*** 路径数量* 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量…

学习动态规划|不同路径、最小路径和、打家劫舍、打家劫舍iii

62 不同路径

在这里插入图片描述

  • 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量
  • dp[i][j] = dp[i-1][j] + dp[i][j-1]

在这里插入图片描述

在这里插入图片描述

import java.util.Arrays;/*** 路径数量* 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量* dp[i][j] = dp[i-1][j] + dp[i][j-1]*/
public class $62 {public int uniquePaths(int m, int n) {int[][] dp = new int[m][n];//边界for (int i = 0; i < m; i++) {dp[i][0] = 1;}for (int i = 0; i < n; i++) {dp[0][i] = 1;}for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = dp[i-1][j] + dp[i][j-1];}}return dp[m-1][n-1];}public int uniquePaths2(int m, int n) {int[] dp = new int[n];Arrays.fill(dp, 1);for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[j] += dp[j-1];}}return dp[n-1];}
}
import java.util.Arrays;/*** 路径数量* 动态规划,dp[i][j]表示从左上角到(i,j)的路径数量* dp[i][j] = dp[i-1][j] + dp[i][j-1]*/
public class $62 {public int uniquePaths2(int m, int n) {int[] dp = new int[n];Arrays.fill(dp, 1);for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[j] += dp[j-1];}}return dp[n-1];}
}

64 最小路径和

在这里插入图片描述

  • 动态规划,dp[i][j]表示从左上角到(i,j)的最小路径和
  • grid[i][j] = Math.min(grid[i-1][j], grid[i][j-1]) + grid[i][j]

在这里插入图片描述

/*** 最小路径和* grid[i][j] = Math.min(grid[i-1][j], grid[i][j-1]) + grid[i][j]*/
public class $64 {public int minPathSum(int[][] grid) {for (int i = 0; i < grid.length; i++) {for (int j = 0; j < grid[i].length; j++) {if (i==0 && j==0) continue;else if (i!=0 && j==0) grid[i][j] = grid[i-1][j] + grid[i][j];else if (i==0 && j!=0) grid[i][j] = grid[i][j-1] + grid[i][j];else grid[i][j] = Math.min(grid[i-1][j], grid[i][j-1]) + grid[i][j];}}return grid[grid.length-1][grid[0].length-1];}
}

198 打家劫舍

在这里插入图片描述

  • 动态规划,nums[i]表示前i间房屋能偷窃到的最高总金额
  • nums[i] = Math.max(nums[i-1], nums[i-2]+nums[i]);

在这里插入图片描述

/*** 打家劫舍* 动态规划,nums[i]表示前i间房屋能偷窃到的最高总金额* nums[i] = Math.max(nums[i-1], nums[i-2]+nums[i]);*/
public class $198 {public int rob(int[] nums) {//注意特殊值0,1if (nums == null || nums.length == 0) {return 0;}if (nums.length == 1) {return nums[0];}//nums[1]为nums[0]、nums[1]的最大值nums[1] = Math.max(nums[0], nums[1]);//从nums[2]开始for (int i = 2; i < nums.length; i++) {nums[i] = Math.max(nums[i-1], nums[i-2]+nums[i]);}return nums[nums.length-1];}
}

337 打家劫舍iii

在这里插入图片描述

  • 树形动态规划
  • 我们可以用 f(o)表示选择 o节点的情况下,o节点的子树上被选择的节点的最大权值和;
  • g(o)表示不选择 o节点的情况下,o节点的子树上被选择的节点的最大权值和;
  • l 和 r代表 o 的左右孩子。
  • 当 o 被选中时:o 的左右孩子都不能被选中,
  •  故 o 被选中情况下子树上被选中点的最大权值和为 l和 r不被选中的最大权值和 + o的值
    
  •  f(o)=g(l)+g(r)+o.val
    
  • 当 o不被选中时,o的左右孩子可以被选中,也可以不被选中。
  •  对于 o的某个具体的孩子 x,它对 o 的贡献是 x被选中和不被选中情况下权值和的较大值。
    
  •  g(o)=max{f(l),g(l)} + max{f(r),g(r)}
    

在这里插入图片描述

import java.util.HashMap;
import java.util.Map;/*** 打家劫舍iii* 树形动态规划* 我们可以用 f(o)表示选择 o节点的情况下,o节点的子树上被选择的节点的最大权值和;* g(o)表示不选择 o节点的情况下,o节点的子树上被选择的节点的最大权值和;* l 和 r代表 o 的左右孩子。** 当 o 被选中时:o 的左右孩子都不能被选中,*      故 o 被选中情况下子树上被选中点的最大权值和为 l和 r不被选中的最大权值和 + o的值*      f(o)=g(l)+g(r)+o.val* 当 o不被选中时,o的左右孩子可以被选中,也可以不被选中。*      对于 o的某个具体的孩子 x,它对 o 的贡献是 x被选中和不被选中情况下权值和的较大值。*      g(o)=max{f(l),g(l)} + max{f(r),g(r)}*/
public class $337 {Map<TreeNode, Integer> f = new HashMap<>();Map<TreeNode, Integer> g = new HashMap<>();public int rob(TreeNode root) {process(root);return Math.max(f.getOrDefault(root, 0), g.getOrDefault(root, 0));}private void process(TreeNode root) {if (root == null) {return;}process(root.left);process(root.right);f.put(root, root.val + g.getOrDefault(root.left, 0) + g.getOrDefault(root.right, 0));g.put(root, Math.max(f.getOrDefault(root.left, 0), g.getOrDefault(root.left, 0))+ Math.max(f.getOrDefault(root.right, 0), g.getOrDefault(root.right, 0)));}//法一的简化版public int rob2(TreeNode root) {int[] rootStatus = process2(root);return Math.max(rootStatus[0], rootStatus[1]);}private int[] process2(TreeNode root) {if (root == null) {return new int[]{0, 0};}int[] l = process2(root.left);int[] r = process2(root.right);int selected = root.val + l[1] + r[1];int notSelected = Math.max(l[0], l[1]) + Math.max(r[0], r[1]);return new int[]{selected, notSelected};}
}
http://www.hkea.cn/news/34083/

相关文章:

  • 对商家而言网站建设的好处淘宝关键词查询工具哪个好
  • 做简单网站代码关键词推广价格
  • 做品牌折扣的网站百度推广的五大优势
  • 南宁比较有好的网站制作公司百度推广后台登录页面
  • 长沙企业网站排名优化windows优化大师和360哪个好
  • 珠海网站开发维护科技公司免费的网络推广渠道有哪些
  • wp建站系统微信营销管理软件
  • 本地打开WordPress慢百度seo优化分析
  • 适合友情链接的网站排名函数
  • 开发公司岗位设置广州seo招聘网
  • 国内web设计网站宣传推广
  • 深圳高端网站定制公司小时seo
  • wordpress主菜单下拉箭头怎么设置台州seo排名优化
  • 网站系统管理员模块关键词查找工具
  • 望江县建设局网站外贸seo推广招聘
  • 微信网站上传图片手机怎么制作网站
  • 简单做网站需要学什么搜索引擎有哪些网站
  • 网站备案信息加到哪里如何进行网站推广
  • 昭通网站制作aso优化技巧
  • 制作网站时怎样做滚动字幕新网站多久会被百度收录
  • 余姚物流做网站微信指数是搜索量吗
  • 怎样做网站轮播今日国内重大新闻事件
  • 想给大学做网站百度网盘搜索神器
  • jsp网站开发论文官方app下载安装
  • 关于机场建设的网站今日疫情最新情况
  • 网站域名注册服务商google浏览器官方
  • 通过网站开发工具怎么改自动跳网站百度指数有哪些功能
  • 可以发锚文本的网站百度搜索官方网站
  • 东莞网站建设企慕简述如何优化网站的方法
  • 可以做网站的公司seo外包