Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Game of Nim อนุญาตให้นำหินออกได้หนึ่งก้อนใน C++


ในปัญหานี้เรียกว่า เกม Nim เราได้รับจำนวนเต็มบวก N ซึ่งแสดงถึงกองหินและมีผู้เล่นสองคน 'playerA' และ 'playerB' . งานของเราคือสร้างโปรแกรมทำนายผู้ชนะเกม Nim

เกมของ NIM − เรามีก้อนหินมากมายและผู้เล่นสองคน 'playerA' และ 'playerB' . ผู้เล่นแต่ละคนสามารถเลือกหนึ่งร้านจากกองถ้า 'playerA' เริ่มหยิบหินก้อนหนึ่งจากกอง เราจำเป็นต้องทำนายผู้ชนะของเกม ผู้เล่นคนสุดท้ายที่เลือกหินจากกองเป็นผู้ชนะของเกม

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

Input: N = 6
Output: playerB
Explanation :
Total stones = 6, players picking stones as
playerA - playerB - playerA - playerB - playerA - playerB

แนวทางการแก้ปัญหา

วิธีหนึ่งในการแก้ปัญหาคือการหาสูตรทั่วไปสำหรับค่า N และผู้ชนะของเกม มาดูค่า N และผู้ชนะในแต่ละกรณีกัน

N =1 ผู้ชนะ =ผู้เล่นA

N =2 ผู้ชนะ =ผู้เล่นB

N =3 ผู้ชนะ =ผู้เล่นA

จากนี้ เราสามารถสรุปได้ว่าถ้า N เป็นเลขคี่ ผู้เล่น A เป็นผู้ชนะ และถ้า N เป็นเลขคู่ ผู้เล่น B เป็นผู้ชนะ

ตัวอย่าง

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

#include<iostream>
using namespace std;

bool findGameofNimWinner(int N){
   if(N%2 == 0)
      return 0;
   else
      return 1;
}
int main(){

   int N = 26;
   cout<<"The winner of the Game of Nim is ";
   findGameofNimWinner(N) ? (cout << "Player A") : (cout << "Player B");
   return 0;
}

ผลลัพธ์

The winner of the Game of Nim is Player B