杀戮尖塔游戏

Java 你正在玩策略卡牌杀戮尖塔游戏,轮到你出牌,手里N张攻击卡,每张都需要花金币coust[i]和获得伤害dmager[i]。

最多花3金币能造成的最大伤害是多少?

java 复制代码
class Solution{
	public int calc(int[] cost, int[] dmager, N){
		int[][] db = new int[N + 1][4];
		
		for(int i = 1; i <= N; i++){
			for(int j = 0; j <= 3; j++){
			    if(cost[i-1] <= j){
                    dp[i][j] = Math.max(dp[i-1][j-cost[i-1]] + dmager[i-1], dp[i-1][j]);
                }
                else{
                    dp[i][j] = dp[i-1][j];
                }			
            }
		}
		return db[N][3];
	}
}

主要思路:

主要思路是使用动态规划,构建一个二维数组dp,dp[i][j]表示使用前i张卡牌,花费j金币能造成的最大伤害。对于每一张卡牌,我们可以选择使用或不使用,使用时需要判断当前金币是否足够,如果足够,就选择使用该卡牌,计算使用该卡牌后的伤害值;不足够时,就选择不使用该卡牌。最后返回dp[N][3],表示使用前N张卡牌,花费3金币能造成的最大伤害。

相关推荐
YGGP几秒前
【Golang】LeetCode 136. 只出现一次的数字
算法·leetcode
YGGP8 分钟前
【Golang】LeetCode 169. 多数元素
算法·leetcode
顾安r12 分钟前
11.20 脚本网页 数学分支
算法·数学建模·html
少许极端16 分钟前
算法奇妙屋(二十)-回文子串/子序列问题(动态规划)
java·算法·动态规划·图解·回文串·回文序列
天赐学c语言23 分钟前
12.20 - 反转链表II && 传值和传地址的区别
数据结构·c++·算法·链表·leecode
如意鼠25 分钟前
大模型教我成为大模型算法工程师之day20: 预训练语言模型 (Pre-trained Language Models)
人工智能·算法·语言模型
_OP_CHEN25 分钟前
【算法基础篇】(三十六)图论基础之拓扑排序:从原理到实战,搞定 DAG 图的 “先后次序” 难题
c++·算法·蓝桥杯·图论·拓扑排序·算法竞赛·acm/icpc
良木生香35 分钟前
【诗句结构-初阶】详解栈和队列(2)---队列
c语言·数据结构·算法·蓝桥杯
yaoh.wang37 分钟前
力扣(LeetCode) 69: x 的平方根 - 解法思路
python·算法·leetcode·面试·职场和发展·牛顿法·二分法
!停38 分钟前
数据在内存中的存储(2)
开发语言·c++·算法