C++ 代码,通过武器来寻找杀死敌人的最小移动次数
假设我们有一个包含 n 个元素的数组 A,以及另一个数字 H。H 是敌人的生命值。我们有 n 种武器,第 i 种武器的伤害值为 A[i]。可以使用不同的武器来杀死敌人。我们不能连续两次使用同一把武器。我们必须计算出可以使用武器杀死敌人的最少次数。
因此,如果输入如下:A = [2, 1, 7];H = 11,则输出将为 3,因为如果我们使用伤害值为 7 的武器,然后使用 2,再使用 7,我们就能杀死敌人。
步骤
要解决这个问题,我们将遵循以下步骤 -
sort the array A n := size of A x := (A[n - 1] + A[n - 2]) return H / x * 2 + (H mod x + A[n - 1] - 1) / A[n-1]
示例
让我们看看以下实现,以获得更好的理解 -
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A, int H){
sort(A.begin(), A.end());
int n = A.size();
int x = (A[n - 1] + A[n - 2]);
return H / x * 2 + (H % x + A[n - 1] - 1) / A[n - 1];
}
int main(){
vector<int> A = { 2, 1, 7 };
int H = 11;
cout << solve(A, H) << endl;
}输入
{ 2, 1, 7 }, 11输出
3
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP