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; }
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
输入
{ 2, 1, 7 }, 11
输出
3
广告