Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

N 라운드 게임에서 누가 이겼는지 알아내는 C++ 코드

<시간/>

n 라운드가 있는 2인 게임이 있다고 가정합니다. 라운드의 점수는 각 요소가 {P1 점수, P2 점수} 형식인 배열 '점수'로 제공됩니다. 더 높은 점수를 가진 플레이어가 라운드에서 승리하고 플레이어가 더 많은 라운드에서 승리하면 게임에서 승리합니다. 그렇지 않으면 무승부로 선언됩니다. 따라서 점수가 주어지면 누가 게임에서 이겼는지 알아내야 합니다.

따라서 입력이 n =4, 점수 ={{4, 3}, {3, 2}, {5, 6}, {2, 5}}인 경우 출력은 무승부가 됩니다.

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

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"))

이해를 돕기 위해 다음 구현을 살펴보겠습니다.

#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