大型大型网站建设方案ppt,做网站类网站费用,东营市建设信息网,手机做免费个人网站Java 你正在玩策略卡牌杀戮尖塔游戏#xff0c;轮到你出牌#xff0c;手里N张攻击卡#xff0c;每张都需要花金币coust[i]和获得伤害dmager[i]。 最多花3金币能造成的最大伤害是多少#xff1f; class Solution{public int calc(int[] cost, int[] dmager, N){int[][] db … Java 你正在玩策略卡牌杀戮尖塔游戏轮到你出牌手里N张攻击卡每张都需要花金币coust[i]和获得伤害dmager[i]。 最多花3金币能造成的最大伤害是多少 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];}
}主要思路 主要思路是使用动态规划构建一个二维数组dpdp[i][j]表示使用前i张卡牌花费j金币能造成的最大伤害。对于每一张卡牌我们可以选择使用或不使用使用时需要判断当前金币是否足够如果足够就选择使用该卡牌计算使用该卡牌后的伤害值不足够时就选择不使用该卡牌。最后返回dp[N][3]表示使用前N张卡牌花费3金币能造成的最大伤害。