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

카드 게임의 승자를 찾는 C++ 프로그램

<시간/>

숫자 n이 있고 각각 크기가 k1과 k2인 두 개의 배열 A와 B가 있다고 가정합니다. 재미있는 카드 게임을 하고 있는 Amal과 Bimalare. 1부터 n까지 n개의 카드가 있습니다. 처음에는 카드가 그들 사이에 분배됩니다. 게임은 다음과 같이 진행됩니다. 각 턴에 각 플레이어는 자신의 카드 중 하나(원하는 카드)를 가져와서 테이블 위에 놓아 다른 플레이어가 자신이 선택한 카드를 볼 수 없도록 합니다. 그런 다음 두 카드를 모두 공개하고 카드 번호가 더 큰 플레이어가 두 카드를 모두 손에 듭니다. 모든 카드는 횟수에 관계없이 사용할 수 있습니다. Amal이 플레이하는 카드를 나타내고 B는 Bimal이 플레이하는 카드를 나타냅니다. 플레이어는 자신에게 카드가 없으면 집니다. 최종 승자를 찾아야 합니다.

따라서 입력이 n =5와 같으면; A =[3, 2]; B =[5, 1, 4]인 경우 출력은 Bimal이 됩니다. 왜냐하면 처음에는 (3, 5), Bimal은 모든 카드를 가져오고, (3, 1)은 Amal이 두 카드를 모두 가져갔기 때문입니다. , 4) Bimal이 모두 가져간 다음 Amal이 1을 사용하면 Bimal이 카드 5로 가져오므로 Amal의 손에는 카드가 없습니다.

단계

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

d := 0
e := 0
for initialize i := 0, when i < size of A, update (increase i by 1),
do:
   f := A[i]
   if d < f, then:
      d := f
for initialize i := 0, when i < size of A, update (increase i by 1),do:
   f := A[i]
   if e < f, then:
      e := f
if d > e, then:
   return "Amal"
Otherwise
   return "Bimal"

예시

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

#include<bits/stdc++.h>
using namespace std;
string solve(int n, vector<int> A, vector<int> B){
   int d = 0;
   int e = 0;
   for(int i = 0; i<A.size(); i++){
      int f = A[i];
      if (d < f)
      d = f;
   }
   for(int i = 0; i<A.size(); i++){
      int f = A[i];
      if(e < f)
      e = f;
   }
   if (d > e)
      return "Amal";
   else
      return "Bimal";
}
int main(){
   int n = 5;
   vector<int> A = {3, 2};
   vector<int> B = {5, 1, 4};
   cout << solve(n, A, B) << endl;
}

입력

5, {3, 2}, {5, 1, 4}

출력

Bimal