カードゲームの勝者を見つけるためのC++プログラム
数n、サイズがそれぞれk1とk2の2つの配列AとBがあるとします。面白いカードゲームをしているアマルとビマラレ。 1からnまでの番号が付けられたn枚のカードがあります。最初に、カードはそれらの間で配布されます。ゲームは次のように進行します。各ターンで、各プレイヤーは自分のカードの1つ(好きな方)を取り、テーブルに置きます。これにより、他のプレイヤーは自分が選択したカードを見ることができなくなります。その後、両方のカードが公開され、カード番号が大きいプレイヤーが両方のカードを手札に取ります。すべてのカードは何度でもプレイできます。アマルがプレイするカードを表し、Bはビマルがプレイするカードを表します。カードを持っていない場合、プレイヤーは負けます。最終的な勝者を見つける必要があります。
したがって、入力が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
-
LCMを見つけるためのC++プログラム
2つの数値の最小公倍数(LCM)は、両方の倍数である最小公倍数です。 例:15と9の2つの数字があるとします。 15 = 5 * 3 9 = 3 * 3 したがって、15と9のLCMは45です。 2つの数値のLCMを見つけるプログラムは次のとおりです- 例 #include <iostream> using namespace std; int main() { int a=7, b=5, lcm; if(a>b) lcm = a; else  
-
GCDを見つけるためのC++プログラム
2つの数値の最大公約数(GCD)は、両方を除算する最大の数値です。 例:45と27の2つの数字があるとします。 45 = 5 * 3 * 3 27 = 3 * 3 * 3 したがって、45と27のGCDは9です。 2つの数値のGCDを見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } int