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