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
廣告