Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để tìm ra ai đã thắng một trò chơi n-round

Giả sử, có một trò chơi hai người chơi có n vòng. Điểm của các vòng được đưa ra trong một mảng 'điểm' trong đó mỗi phần tử có định dạng {Điểm P1, Điểm P2}. Người chơi có số điểm cao hơn sẽ thắng một 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; nếu không, nó được tuyên bố là một trận hòa. Vì vậy, với điểm số, chúng tôi phải tìm ra ai đã thắng trò chơi.

Vì vậy, nếu đầu vào là n =4, điểm ={{4, 3}, {3, 2}, {5, 6}, {2, 5}}, thì đầu ra sẽ là Hòa.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

res := 0
while n is non-zero, do:
   a := first value of scores[n]
   b := second value of scores[n]
   res := res + ((if a > b, then 1, otherwise (if a < b, then -1, otherwise 0)))
   n := n - 1
return (if res > 0, then "P1", otherwise (if res < 0, then "P2", otherwise "Draw"))

Ví dụ

Hãy cùng chúng tôi xem cách 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