Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में अमल स्टोन गेम जीत सकता है या नहीं यह जांचने के लिए प्रोग्राम

मान लीजिए कि दो खिलाड़ी अमल और बिमल हैं, वे एक खेल खेल रहे हैं, और अमल के साथ पहले शुरू होता है। प्रारंभ में, ढेर में n अलग-अलग पत्थर होते हैं। प्रत्येक खिलाड़ी की बारी पर, वह ढेर से पत्थरों के किसी भी वर्ग संख्या (गैर-शून्य) को हटाने के साथ एक चाल चलता है। साथ ही, यदि कोई खिलाड़ी चाल चलने में असमर्थ होता है, तो वह खेल हार जाता है। इसलिए अगर हमारे पास n है, तो हमें यह देखना होगा कि अमल गेम जीत सकता है या नहीं।

इसलिए, यदि इनपुट n =21 जैसा है, तो आउटपुट ट्रू होगा क्योंकि पहले अमल 16 ले सकता है, फिर बिमल 4 लेता है, फिर अमल 1 लेता है और गेम जीत जाता है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • वर्ग :=एक नई सूची

  • वर्ग :=1

  • वृद्धि :=3

  • जबकि वर्ग <=n, करें

    • वर्गों के अंत में वर्ग डालें

    • वर्ग :=वर्ग + वृद्धि

    • वृद्धि :=वृद्धि + 2

  • वर्गों के अंत में वर्ग डालें

  • dp :=आकार की एक खाली सूची (n + 1)

  • डीपी [0] :=झूठा

  • 1 से n की श्रेणी में k के लिए, करें

    • एस:=0

    • डीपी [के]:=झूठा

    • जबकि वर्ग[s] <=k और dp[k] खाली है, करें

      • अगर dp[k - वर्ग[s]] खाली है, तो

        • डीपी [के] :=सच

      • एस:=एस + 1

  • डीपी का अंतिम तत्व लौटाएं

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें

def solve(n):
   squares = []
   square = 1
   increase = 3
   while square <= n:
      squares.append(square)
      square += increase
      increase += 2
   squares.append(square)

   dp = [None] * (n + 1)
   dp[0] = False
   for k in range(1, n + 1):
      s = 0
      dp[k] = False
      while squares[s] <= k and not dp[k]:
         if not dp[k - squares[s]]:
            dp[k] = True
         s += 1
   return dp[-1]

n = 21
print(solve(n))

इनपुट

21

आउटपुट

True

  1. पायथन में नोड्स की अदला-बदली से दो पेड़ बन सकते हैं या नहीं, इसकी जाँच करने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास दो पेड़ हैं, हमें यह जांचना होगा कि क्या हम किसी भी नोड के बाएँ और दाएँ सबट्री को कितनी भी बार स्वैप करके पहले पेड़ को दूसरे में बदल सकते हैं। तो, अगर इनपुट पसंद है तो आउटपुट सही होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - que1 :=शुरुआत में root0 वाली एक कतार

  1. पायथन में दिया गया ग्राफ द्विदलीय है या नहीं, यह जांचने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास एक अप्रत्यक्ष ग्राफ है, हमें यह जांचना है कि ग्राफ द्विदलीय है या नहीं। जैसा कि हम जानते हैं कि एक ग्राफ द्विदलीय होता है जब हम ग्राफ के नोड्स को दो सेट ए और बी में विभाजित कर सकते हैं जैसे कि ग्राफ के प्रत्येक किनारे {यू, वी} में ए में एक नोड और बी में दूसरा नोड वी होता है।

  1. एक सूची खाली है या नहीं, यह जांचने के लिए पायथन प्रोग्राम?

    एक खाली सूची दी। हमारा काम मौसम की जांच करना है कि यह सूची खाली है या नहीं। यहाँ हम जाँच करते हैं जाँच का एक निहित तरीका है। एल्गोरिदम Step 1: We take an empty list. Step 2: then check if list is empty then return 1 otherwise 0. उदाहरण कोड # Python code to check for empty list def checklist(A):