Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โค้ด C++ หาผู้ชนะเกม n รอบ

สมมติว่ามีเกม 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