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

盐城做网站网络公司电话?天津市建设厅建筑业信息网

盐城做网站网络公司电话?,天津市建设厅建筑业信息网,app定制大概多少钱,乐清做网站培训文章目录1题目理解2 分析1题目理解 故事背景#xff1a;恶魔把公主抓走了#xff0c;关在地牢里面。骑士想要把公主救出来。初始化的时候#xff0c;骑士有一个健康值init。 输入#xff1a;int[][] dungeon表示地牢中魔鬼布局图。dungeon[i][j]0#xff0c;恶魔会提… 文章目录1题目理解2 分析1题目理解 故事背景恶魔把公主抓走了关在地牢里面。骑士想要把公主救出来。初始化的时候骑士有一个健康值init。 输入int[][] dungeon表示地牢中魔鬼布局图。dungeon[i][j]0恶魔会提高骑士的健康值dungeon[i][j]dungeon[i][j]会降低 骑士健康值掉血。如果骑士健康值为0那骑士就牺牲了。 输出骑士需要的最小健康值。 例如 输入 -2 (K)-33-5-1011030-5P 输出7 按照 右-右-下-下的路线健康值最小是7即可。 2 分析 解题思路来源于力扣。 从左上角走到右下角有很多种走法参考63题。找到每一种需要的最小健康值求最小值就是答案。对于这种比较难的题目会先列出解题框架然后再分析填充。 先写暴力搜索的框架。将与状态无关的变量dungeonmn等放到实例变量中。从(0,0)开始走横纵坐标是状态相关的作为方法参数。 class Solution {private int[][] dungeon;private int m;private int n;private int minHealth;public int calculateMinimumHP(int[][] dungeon) {this.dungeon dungeon;m dungeon.length;n dungeon[0].length;minHealth Integer.MAX_VALUE;visit(0,0);return minHealth;}private void visit(int i, int j){if(im || jn){....return;}...} }需要保证骑士在到达(i,j)之后健康值大于0那就需要上一步的健康值。 从(i,j)可以达到(i1,j)、(i,j1)。 class Solution {...public int calculateMinimumHP(int[][] dungeon) {this.dungeon dungeon;m dungeon.length;n dungeon[0].length;minHealth Integer.MAX_VALUE;visit(0,0,0);return minHealth;}private void visit(int i, int j, int preHealth){if(im || jn){return;}int health preHealth dungeon[i][j];...} }health如果小于1那么就需要abs(health)1的初始健康值。 health如果大于 1那么就初始健康值可以为0。 也就是 init0 if health1initabs(health)1,if health0 找到了当前状态的init还需要查找到这条路径上最大的init才是就出公主的当前路径上需要的最小的init。例如-2--3-3-1--5这条路径。在(0,1)这一点health6,那么init0。在(0,2),init 3。需要找到这条路径上的最大值才能保证走这条路完成任务。 class Solution {...private void visit(int i, int j, int preHealth,int maxInitOfPath){if(im || jn){return;}preHealth dungeon[i][j];int init preHealth1?0:Math.abs(preHealth)1;maxInit Math.max(maxInit,init);} }接下来分析完成的标志是到达(m,n-1)或者m-1,n。达到(m-1,n-1)之后再走一步确定全局最小init。 public int calculateMinimumHP(int[][] dungeon) {this.dungeon dungeon;m dungeon.length;n dungeon[0].length;minHealth Integer.MAX_VALUE;visit(0,0,0,0);return minHealth;}private void visit(int i, int j, int preHealth,int maxInitOfPath){if(im-1 jn || im jn-1){minHealth Math.min(minHealth,maxInitOfPath);return;}if(im || jn){return;}preHealth dungeon[i][j];int init preHealth1?0:Math.abs(preHealth)1;maxInitOfPath Math.max(maxInitOfPath,init);visit(i1,j,preHealth,maxInitOfPath);visit(i,j1,preHealth,maxInitOfPath);}minHealth就是最小需要的初始健康值。 再进一步观察发现preHealth其实就是路径上dungeon[i][j]的和。maxInitOfPath的取值和整条路径中的的最小值有关系。也就是说路径和、路径上的最小值与最终结果有关系。动态规划只能表示一个变量没有办法把这两个因素都放入转移方程。 如果从右下角向左上角进行递归我们需要保证达到(i,j)的时候的路径和preSumdungeon[i][j]即可。 令dp[i][j] 表示从坐标 (i,j)(i,j) 到终点所需的最小初始值dp[i][j]与dp[i1][j]、dp[i][j1]有关系 。 dp[i][j]min(dp[i1][j],dp[i][j1])−dungeon[i][j]dp[i][j] min(dp[i1][j],dp[i][j1]) - dungeon[i][j]dp[i][j]min(dp[i1][j],dp[i][j1])−dungeon[i][j]。 考虑初始化dp[m-1][n] dp[m][n-1]1。 class Solution {public int calculateMinimumHP(int[][] dungeon) {int m dungeon.length;int n dungeon[0].length;int[][] dp new int[m1][n1];for(int[] d : dp){Arrays.fill(d,Integer.MAX_VALUE);}dp[m][n-1]dp[m-1][n]1;for(int im-1;i0;i--){for(int jn-1;j0;j--){int min Math.min(dp[i1][j], dp[i][j1]);dp[i][j] Math.max(min-dungeon[i][j],1);}}return dp[0][0];}}
http://www.pierceye.com/news/447949/

相关文章:

  • 响应式网站手机端尺寸网站开发培训心得
  • 徐州手机网站开发公司电话江苏五星建设网站
  • 网站建设全包广做短视频素材哪里找
  • 做网站为什么每年都要续费企业官网建站步骤
  • 培训行业门户网站建设方案专业网站运营制作
  • 百度网站两两学一做心得体会江苏专业网站建设费用
  • 做企业网站的架构图网站上的销售怎么做
  • 网站开发思维导图内容淘宝客在百度推广网站么做
  • 国外美容网站crm开发
  • 辽宁建设资质申报网站wordpress提示插件安装
  • 做网站用什么软件语言wordpress绑定域名后乱码
  • 网站建设邀请函郑州网站搭建的公司
  • 网站制作论文优帮云广州网站设计首选柚米
  • 唐山建设厅官方网站我有一个网站怎么做外贸
  • 荣成城市规划建设局网站宁晋网站开发
  • 福州电子商务网站手机触屏版网站开发
  • 佛山网站建设骏域开发公司综合部内部管理章程
  • 网站建设 迅雷下载西安建设工程信息网网上招投标
  • 浅析个人网站的设计论文二本网络工程就业前景
  • 网站没有做301的后果是什么苏州工业园区两学一做教育网站
  • 品牌网站建设定位湖南做网站的公司有哪些
  • mvc做的网站郑州作网站
  • 门户网站栏目建设购物类网站开发
  • 专业的网站建设企业新浪网 网站建设
  • 长春网站建设wang汕头网站建设网站
  • 自助建站网站哪个好网站做nat映射需要哪些端口
  • 免费手机网站平台注册嘉兴建站公司
  • 什么网站可以做兼职美工网站建设方案500字
  • 宁波做网站优化网站专题页怎么做
  • 西安网站建设q.479185700強网站改版301是什么意思