ホームページ >バックエンド開発 >PHPチュートリアル >ストーンゲームⅡ
1140。ストーンゲーム II
難易度: 中
トピック: 配列、数学、動的計画法、接頭辞の合計、ゲーム理論
アリスとボブは石の山でゲームを続けます。 一列に配置された多数の杭があり、各杭には正の整数の石の山[i]があります。 ゲームの目的は、より多くの石を獲得して終了することです。
アリスとボブは交代で、アリスが最初に始めます。 初期状態では、M = 1.
各プレイヤーのターンで、そのプレイヤーは 最初 個の残りの X 山にある すべての石 を獲得できます (1
すべての石が取られるまでゲームは続きます。
アリスとボブが最適にプレイすると仮定して、アリスが獲得できる石の最大数を返します。
例 1:
例 2:
制約:
ヒント:
解決策:
両方のプレイヤーが最適にプレイした場合にアリスが獲得できる石の最大数を見つけるには、動的プログラミングを使用する必要があります。ソリューションを開発するための段階的なアプローチは次のとおりです:
状態と遷移を定義します:
基本ケース:
再帰的なケース:
遷移関数:
このソリューションを PHP で実装してみましょう: 1140。ストーンゲーム II
<?php // Example usage $solution = new Solution(); $piles1 = [2, 7, 9, 4, 4]; $piles2 = [1, 2, 3, 4, 5, 100]; echo $solution->stoneGameII($piles1) . "\n"; // Output: 10 echo $solution->stoneGameII($piles2) . "\n"; // Output: 104 ?>
このアプローチにより、動的プログラミングを利用して冗長な計算を回避し、解が効率的に計算されます。
連絡先リンク
このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!
このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
以上がストーンゲームⅡの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。