ホームページ  >  記事  >  バックエンド開発  >  C で修正された Nim ゲーム?

C で修正された Nim ゲーム?

PHPz
PHPz転載
2023-09-01 14:57:07707ブラウズ

C で修正された Nim ゲーム?

Nim の改造ゲームは配列の最適化ゲームです。このゲームは、開始プレイヤーと最適な動きに基づいて勝者を予測します。

ゲーム ロジック − このゲームでは、要素を含む配列が与えられます。{}通常、ゲームをプレイするプレーヤーは 2 人、つまり player1 と player2 です。どちらの目的も、すべての数値が配列から確実に削除されるようにすることです。ここで、player1 は 3 で割り切れるすべての数字を削除する必要があり、player2 は 5 で割り切れるすべての数字を削除する必要があります。目的は、すべての要素を最適に削除し、この場合の勝者を見つけることです。

サンプル

Array : {1,5, 75,2,65,7,25,6}
Winner : playerB.
A removes 75 -> B removes 5 -> A removes 6 -> B removes 65 -> No moves for A, B wins.

コード プレビュー

コードは、A が削除できる要素の数、B が削除できる要素の数、および両方が削除できる要素の数を見つけます。取り除く。両方が削除できる要素の数に基づいて、解決策が見つかります。 A が最初の要素を削除すると、B よりも 1 つ多くの要素を削除する必要がある場合でも勝つことができます。通常の場合、削除する要素の最大数を持つプレーヤーが勝ちます。

ゲームの解決策を見つけるプログラムNIM

#include <bits/stdc++.h>
using namespace std;
int main() {
   int arr[] = {1,5, 75,2,65,7,25,6};
   int n = sizeof(arr) / sizeof(arr[0]);
   int movesA = 0, movesB = 0, movesBoth = 0;
   for (int i = 0; i < n; i++) {
      if (arr[i] % 3 == 0 && arr[i] % 5 == 0)
         movesBoth++;
      else if (arr[i] % 3 == 0)
         movesA++;
      else if (arr[i] % 5 == 0)
         movesB++;
   }
   if (movesBoth == 0) {
      if (movesA > movesB)
         cout<<"Player 1 is the Winner";
      cout<<"Player 2 is the Winner";
   }
   if (movesA + 1 > movesB)
      cout<<"Player 1 is the Winner";
   cout<<"Player 2 is the Winner"; ;
   return 0;
}

出出

Player 2 is the Winner

以上がC で修正された Nim ゲーム?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。