สมมติว่าเรามีอาร์เรย์ A ที่มีองค์ประกอบ n มี n ตัวเลขเขียนไว้บนกระดาน Amaland Bimal กำลังเล่นเกมแบบผลัดกันเล่น ในแต่ละเทิร์นพวกเขาจะเลือกหมายเลขและลบออกจากกระดาน อามาลเล่นก่อน 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