C++ 代码找出在 min max 删除游戏后的最后数字


假设我们有一个包含 n 个元素的数组 A,在白板上写了 n 个数字。Amal 和 Bimal 正在玩一个回合制游戏。在每回合,他们会选择一个数字并将其从白板中移除。Amal 先玩。Amal 想要让他在白板上留下的最后一个数字最小,而 Bimal 想要最大化它。我们必须找到将留在白板上的数字。

因此,如果输入类似 A = [2, 1, 3],则输出为 2,因为 Amal 将移除 3,Bimal 将移除 1,因此最终数字将为 2。

步骤

为了解决这个问题,我们将遵循以下步骤 -

n := size of A
sort the array A
return A[floor of ((n - 1)/2)]

示例

让我们看看以下实现以获得更好的理解 -

#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A){
   int n = A.size();
   sort(A.begin(), A.end());
   return A[(n - 1) / 2];
}
int main(){
   vector<int> A = { 2, 1, 3 };
   cout << solve(A) << endl;
}

输入

{ 2, 1, 3 }

输出

2

更新日期: 15-Mar-2022

205 次浏览

开启你的 事业

完成课程以获得认证

开始
广告