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

Un jeu Nim modifié en C ?

PHPz
PHPzavant
2023-09-01 14:57:07707parcourir

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.

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

输出

Player 2 is the Winner

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer