カードゲームの勝者を見つけるための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