最初のプレーヤーがC++で文字ごとに文字列を形成できるゲームに勝つことができるかどうかを確認するプログラム
単語のリストがあるとします。次に、2人のプレイヤーが参加できるゴーストゲームについて考えてみましょう。ここでは、プレーヤーは文字列に文字を交互に追加します。また、作成される文字列は、リスト内の単語の有効なプレフィックスである必要があり、リスト内の単語を綴るプレーヤーは負けます。両方のプレーヤーが最適にプレーしているかどうか、最初のプレーヤーが勝つことができるかどうかを確認する必要があります。
したがって、入力がwords =["manage"、 "manager"、 "min"]の場合、-
のように再生できるため、出力はTrueになります。- m[プレーヤー1]
- ma[プレーヤー2]
- 男[プレーヤー1]
- マナ[プレーヤー2]
- 管理[プレーヤー1]
- [プレーヤー2]を管理する
つまり、プレーヤー1が勝ちます。
これを解決するには、次の手順に従います-
- 1つのマップmpを定義する
- 単語ごとに、
- ch:=it [0]
- それをmp[ch]に挿入します
- mn:=inf
- キーと値のペアごとにmpで実行し、
- str:=その値
- size:=strのサイズ
- サイズmod2が0と同じ場合、-
- 1を返す
- 0を返す
例(C ++)
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; bool solve(vector<string> &words) { map<char, set<string>> mp; for (auto &it : words) { char ch = it[0]; mp[ch].insert(it); } int mn = INT_MAX; for (auto &it : mp) { string str = *(it.second.begin()); int size = str.size(); if (size % 2 == 0) return 1; } return 0; } int main(){ vector<string> v = {"manage", "manager", "min"}; cout << solve(v); }
入力
{"manage", "manager", "min"}
出力
1
-
Pythonで最初のプレイヤーが他のプレイヤーよりも多くのキャンディーを取ることができるかどうかを確認するプログラム
キャンディーと呼ばれる番号のリストがあり、2人が最も多くのキャンディーを集めるために競争しているとします。ここでは、レースはターンベースで、人1が最初に開始し、各ターンで、前または後ろからキャンディーを拾うことができます。人1が他の人よりも多くのキャンディーを集めることができるかどうかを確認する必要があります。 したがって、入力がキャンディー=[1、4、3、8]のようである場合、出力はTrueになります。これは、人1が最初のラウンドで8個のキャンディーを取ることができ、2人目が1または3を選ぶかどうかに関係なく、人1残りのキャンディーを取ることで勝つことができます。 これを解決するには、次
-
最初のプレイヤーがPythonでキャンディーリムーブゲームで勝つかどうかを確認するプログラム?
キャンディーと呼ばれる番号のリストがあり、誰かが友人とゲームをしているとします。各ラウンドで、プレーヤーは同じ値の2つの連続したキャンディーを取り除くことができます。そして、キャンディーを手に入れることができない人は誰でも負けて、そのplayer1が最初に開始するので、player1が勝つかどうかを確認する必要があります。 したがって、入力がnums =[2、2、5]の場合、出力はTrueになります。まるで、player1が2を選択した場合、他のプレーヤーはキャンディーを選択できません。 これを解決するには、次の手順に従います。 スタック:=新しいスタック ターン:=0