寻找纸牌游戏获胜者的 C++ 程序

阅读 114 收藏 0 点赞 0 评论 0

假设我们有一个数字 n,两个数组 A 和 B 的大小分别为 k1 和 k2。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

评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号