Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Code C++ xác định người thắng cuộc trong trò chơi n vòng


Giả sử có một trò chơi hai người chơi với n vòng. Điểm số của các vòng được cho trong mảng 'scores' nơi mỗi phần tử có dạng {Điểm P1, Điểm P2}. Người chơi có điểm cao hơn sẽ thắng vòng đó, và một người chơi thắng trò chơi nếu họ thắng nhiều vòng hơn; ngược lại, sẽ được tuyên bố là hòa. Vậy, cho điểm số, hãy tìm xem ai đã thắng trò chơi.

Ví dụ, nếu đầu vào là n = 4, scores = {{4, 3}, {3, 2}, {5, 6}, {2, 5}}, thì đầu ra sẽ là Draw.

Các bước thực hiện

Để giải quyết bài toán này, chúng ta thực hiện theo các bước sau:

res := 0 while n khác 0, do:    a := giá trị đầu tiên của scores[n]    b := giá trị thứ hai của scores[n]    res := res + ((nếu a > b, thì 1, ngược lại (nếu a < b, thì -1, ngược lại 0)))    n := n - 1 return (nếu res > 0, thì "P1", ngược lại (nếu res < 0, thì "P2", ngược lại "Draw"))

Ví dụ minh họa

Xem triển khai sau để hiểu rõ hơn:

#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; }

Đầu vào

4, {{4, 3}, {3, 2}, {5, 6}, {2, 5}}

Đầu ra

Draw