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
廣告