C++程式:尋找卡牌遊戲贏家


假設我們有一個數字n,兩個大小分別為k1和k2的陣列A和B。Amal和Bimal正在玩一個有趣的卡牌遊戲。共有n張牌,編號從1到n。最初這些牌在他們之間分配。遊戲進行如下:每一輪,每個玩家取一張自己的牌(任意一張)放在桌子上,這樣另一個玩家看不到他們選擇了哪張牌。然後,兩張牌都顯示出來,牌數較大的玩家將兩張牌都拿到手中。每張牌可以玩任意次數。A代表Amal玩的牌,B代表Bimal玩的牌。如果玩家沒有牌,則輸掉遊戲。我們必須找到最終的贏家。

所以,如果輸入類似於n = 5;A = [3, 2];B = [5, 1, 4],則輸出將是Bimal,因為最初他們玩的是(3, 5),Bimal拿走了所有牌,然後玩(3, 1) Amal拿走了兩張牌,然後如果他們玩(3, 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

更新於:2022年3月15日

瀏覽量:555

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告