สมมติว่ามีเกม 2 คนเล่น n รอบ คะแนนแต่ละรอบกำหนดในอาร์เรย์ 'scores' โดยแต่ละองค์ประกอบเป็นรูปแบบ {คะแนนP1, คะแนนP2} ผู้ที่ได้คะแนนมากกว่าจะชนะรอบนั้น และผู้ชนะเกมคือคนที่ชนะรอบมากกว่า มิฉะนั้นจะเป็นเสมอ กำหนดคะแนน ให้หาผู้ชนะ
เช่น ถ้าค่าที่ป้อนเข้าเป็น n = 4, scores = {{4, 3}, {3, 2}, {5, 6}, {2, 5}} ผลลัพธ์จะได้ Draw
ขั้นตอนการแก้ปัญหา
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
res := 0 ในขณะที่ n ไม่เป็นศูนย์ ทำ: a := ค่าแรกของ scores[n] b := ค่าที่สองของ scores[n] res := res + ((ถ้า a > b แล้ว 1 มิฉะนั้น (ถ้า a < b แล้ว -1 มิฉะนั้น 0))) n := n - 1 คืนค่า (ถ้า res > 0 แล้ว "P1" มิฉะนั้น (ถ้า res < 0 แล้ว "P2" มิฉะนั้น "Draw"))
ตัวอย่างโค้ด
ดูการนำไปใช้จริงด้านล่างเพื่อความเข้าใจที่ดียิ่งขึ้น:
#include <bits/stdc++.h> using namespace std; #define N 100 string solve(int n, vector<pair<int, int>> scores) { int res = 0; while(n--){ int a = scores[n].first; int b = scores[n].second; res += (a > b ? 1 : (a < b ? -1 : 0)); } return res > 0 ? "P1" : (res < 0 ? "P2" : "Draw"); } int main() { int n = 4; vector<pair<int, int>> scores = {{4, 3}, {3, 2}, {5, 6}, {2,5}}; cout<< solve(n, scores); return 0; }
ข้อมูลนำเข้า
4, {{4, 3}, {3, 2}, {5, 6}, {2, 5}}
ข้อมูลส่งออก
Draw