现在有一个打怪类型的游戏,这个游戏是这样的,你有个技能,每一个技能会有一个伤害,同时若怪物低于一定的血量,则该技能可能造成双倍伤害,每一个技能最多只能释放一次,已知怪物有点血量,现在想问你最少用几个技能能消灭掉他(血量小于等于)。
区块链毕设网qklbishe.com为您提供问题的解答
现在有一个打怪类型的游戏,这个游戏是这样的,你有个技能,每一个技能会有一个伤害,同时若怪物低于一定的血量,则该技能可能造成双倍伤害,每一个技能最多只能释放一次,已知怪物有点血量,现在想问你最少用几个技能能消灭掉他(血量小于等于)。
/**
* @author wudi
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int group = scanner.nextInt();
while (group > 0){
int n = scanner.nextInt();
int m = scanner.nextInt();
int []attack = new int[n];
int []doubleAck = new int[n];
// n 个技能 怪物有m点血量
boolean []used = new boolean[n];
for (int i = 0;i<n;i++){
attack[i] = scanner.nextInt();
doubleAck[i] = scanner.nextInt();
}
int process = process(attack, doubleAck, m,used);
System.out.println(process);
group–;
}
}
private static int process(int[] attack, int[] doubleAck, int m,boolean []used) {
if (m <= 0) return 0;
int count = 0x7fffffff;
for (int i = 0;i<attack.length;i++){
if (used[i]) continue;
if(m <= doubleAck[i]){
used[i] = true;
int res = process(attack, doubleAck, m – 2 * attack[i], used);
if (res!=-1){
count = Math.min(count,res + 1);
}
used[i] = false;
}else {
used[i] = true;
int res = process(attack, doubleAck, m – attack[i], used);
if (res!=-1){
count = Math.min(count,res + 1);
}
used[i] = false;
}
}
return count == 0x7fffffff?-1:count;
}
}
以上就是关于问题现在有一个打怪类型的游戏,这个游戏是这样的,你有个技能,每一个技能会有一个伤害,同时若怪物低于一定的血量,则该技能可能造成双倍伤害,每一个技能最多只能释放一次,已知怪物有点血量,现在想问你最少用几个技能能消灭掉他(血量小于等于)。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训