バー
シボ李:n個のアイテムの山は、二人は、それぞれが、少なくとも、所定の取りメートルを取る、ターンはスタック項目から抽出取ります。最後に、勝つことによって光抽出。
法:そのため、どんなに勝つ残りの項目を、離れて取った後できる人物を、奪うどのように多くの最初の場合はN = M + 1、そしてメートルの最大数が可能であるため、。だから我々は勝つ方法のルールがわかり:もしN =(M + 1)のR + S、(rはkで離れて取った後ならば、その後、Sの記事を取るための最初の受け手任意の自然数、s≤mです)( ≤M)番目の最初の結果番目の再M + 1-kで奪う、残りの(M + 1)(R- 1) 番目には、エミュレートされたように維持した後、最初の受け手は確かに勝ちます。要するに、相手に複数の(M + 1)を残しておくためには、最終的には勝つことができます。
例:
テーブルの上に石の山、あなたは1--3石を取り除く回すたびに:あなたとあなたの友人は、二つのゲームでプレーします。人物の削除された最後の石は勝者です。あなただけみてください。
あなたは賢い人です、すべてのステップは、最適なソリューションです。あなたがゲームの石の与えられた数の場合には勝つことができるかどうかを判断するための関数を書きます
分析を得ることができます:4人の整数倍の顔が立つことはできません、あなたの対戦相手を取ること4の総削減ラウンドごとに、お向かい4倍永遠に、逆に4までは、あればほとんど確実にするために、ルートN 4-Nのルートを取りますない4の倍数を開始し、あなただけの残りの4つの複数のルートを削除することができますので、彼は常に反対4の倍数は、あなたが勝つことができるようにします。
のみ、nは4の整数倍であるか否かを判定するには、勝利が行くかどうかを判断することができます。その場合、上側の手を失う、または勝ちます。
パブリック静的無効メイン(文字列[] args){
System.out.printlnは(canWinNim(3))。
}
パブリック静的ブールcanWinNim(int型N){
IF(N%4!= 0){
trueを返します。
}そうでない場合はfalseを返します。
}