> 백엔드 개발 > C++ > 본문

C로 수정된 Nim 게임?

PHPz
풀어 주다: 2023-09-01 14:57:07
앞으로
742명이 탐색했습니다.

C로 수정된 Nim 게임?

님의 수정된 게임은 배열 최적화 게임입니다. 이 게임은 시작 플레이어와 최적의 움직임을 기반으로 승자를 예측합니다.

Game Logic − 이 게임에서는 요소가 포함된 배열{}이 제공됩니다. 일반적으로 게임을 플레이하는 플레이어는 플레이어1과 플레이어2입니다. 두 가지 모두의 목표는 모든 숫자가 배열에서 제거되는지 확인하는 것입니다. 이제 플레이어1은 3으로 나누어지는 숫자를 모두 제거해야 하고 플레이어2는 5로 나누어지는 숫자를 모두 제거해야 합니다. 목표는 모든 요소를 ​​최적으로 제거하고 이 경우 승자를 찾는 것입니다.

Sample

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보다 하나 더 많은 요소를 제거하더라도 승리할 수 있습니다. 일반적으로 제거할 요소의 최대 개수를 가진 플레이어가 승리합니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿