สมมติว่าเรามีอาร์เรย์ 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