Maison > développement back-end > C++ > Un jeu Nim modifié en C ?

Un jeu Nim modifié en C ?

PHPz
Libérer: 2023-09-01 14:57:07
avant
752 Les gens l'ont consulté

Un jeu Nim modifié en C ?

Le jeu modifié de Nim est un jeu d'optimisation de tableaux. Ce jeu prédit le gagnant en fonction du premier joueur et des mouvements optimaux.

Game Logic − Dans ce jeu, on nous donne un tableau {}, qui contient des éléments. Il y a généralement deux joueurs qui jouent au jeu, à savoir le joueur 1 et le joueur 2. Le but des deux est de s’assurer que tous leurs numéros sont supprimés du tableau. Maintenant, le joueur 1 doit supprimer tous les nombres divisibles par 3 et le joueur 2 doit supprimer tous les nombres divisibles par 5. Le but est de s'assurer qu'ils suppriment tous les éléments de manière optimale et trouvent le gagnant dans ce cas.

Exemple

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.
Copier après la connexion

Aperçu du code

Le code trouvera le nombre d'éléments que A peut supprimer, le nombre d'éléments que B peut supprimer et le nombre d'éléments qu'ils peuvent tous deux supprimer. En fonction du nombre d'éléments qu'ils peuvent tous deux supprimer, la solution est trouvée. Comme A supprime les premiers éléments, il peut gagner même s'il doit supprimer un élément de plus que B. Dans le cas normal, le joueur avec le nombre maximum d'éléments à supprimer gagne.

PROGRAMME POUR TROUVER LA SOLUTION POUR LE JEU DE 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;
}
Copier après la connexion

输出

Player 2 is the Winner
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal