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

เกมนิ่มใน C++


สมมุติว่าเรากำลังเล่นเกมชื่อ Nim Game กับผู้เล่นอื่น มีกองหิน ทุกครั้งที่ผู้เล่นคนหนึ่งผลัดกันเอาหิน 1 ถึง 3 ออก ผู้ที่เอาหินก้อนสุดท้ายออกจะเป็นผู้ชนะ ผู้เล่นที่ 1 จะทำการเลี้ยวครั้งแรกเพื่อเอาหินออก ผู้เล่นทั้งสองคนฉลาดมากและมีกลยุทธ์ที่เหมาะสมที่สุดสำหรับเกม เราต้องสร้างอัลกอริธึมเพื่อพิจารณาว่าผู้เล่น 1 สามารถชนะเกมได้หรือไม่โดยพิจารณาจากจำนวนหินในกอง

ดังนั้น หากอินพุตเท่ากับ 5 ผลลัพธ์จะเป็นจริง เนื่องจากมี 5 สโตน ดังนั้นในตอนเริ่มต้น หากผู้เล่น 1 หยิบหินหนึ่งก้อน ผู้เล่นคนที่สองสามารถรับหินได้ 1 ถึง 3 ก้อน , จะเหลือหินอย่างน้อยหนึ่งก้อนหลังจากเทิร์นของผู้เล่นที่ 2 ดังนั้นผู้เล่นที่ 1 จึงสามารถชนะได้

ซึ่งสามารถแก้ไขได้โดยใช้ขั้นตอนง่ายๆ เพียงขั้นตอนเดียว -

  • คืนค่า จริง เมื่อ n mod 4 ไม่เหมือนกับ 0 มิฉะนั้น เท็จ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool canWinNim(int n) {
      return n%4!=0;
   }
};
main(){
   Solution ob;
   cout << (ob.canWinNim(5));
}

อินพุต

5

ผลลัพธ์

1