मान लीजिए कि हम एक अन्य खिलाड़ी के साथ 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