Heim  >  Artikel  >  Backend-Entwicklung  >  Ein in C modifiziertes Nim-Spiel?

Ein in C modifiziertes Nim-Spiel?

PHPz
PHPznach vorne
2023-09-01 14:57:07707Durchsuche

Ein in C modifiziertes Nim-Spiel?

Das modifizierte Nim-Spiel ist ein Optimierungsspiel für Arrays. Dieses Spiel sagt den Gewinner basierend auf dem Startspieler und den optimalen Zügen voraus.

Spiellogik − In diesem Spiel erhalten wir ein Array{}, das Elemente enthält. Es gibt im Allgemeinen zwei Spieler, die das Spiel spielen, nämlich Spieler1 und Spieler2. Das Ziel beider besteht darin, sicherzustellen, dass alle ihre Zahlen aus dem Array entfernt werden. Jetzt muss Spieler1 alle Zahlen entfernen, die durch 3 teilbar sind, und Spieler2 muss alle Zahlen entfernen, die durch 5 teilbar sind. Ziel ist es, sicherzustellen, dass alle Elemente optimal entfernt werden, und in diesem Fall den Gewinner zu finden.

Beispiel

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.

Codevorschau

Der Code ermittelt die Anzahl der Elemente, die A entfernen kann, die Anzahl der Elemente, die B entfernen kann, und die Anzahl der Elemente, die beide entfernen können. Basierend auf der Anzahl der Elemente, die beide entfernen können, wird die Lösung gefunden. Da A die ersten Elemente entfernt, kann es gewinnen, auch wenn er ein Element mehr als B entfernen muss. Im Normalfall gewinnt der Spieler mit der maximalen Anzahl an zu entfernenden Elementen输出

#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;
}

Das obige ist der detaillierte Inhalt vonEin in C modifiziertes Nim-Spiel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen