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.
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.
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!