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

पायथन में दिए गए संख्याओं के सेट का उपयोग करके व्यंजक का अधिकतम संभव मान ज्ञात करने का कार्यक्रम

मान लीजिए कि हमारे पास nums1 और nums2 नामक दो सरणियाँ हैं, उनके पास तत्वों की संख्या समान है। अब एक सेट S पर विचार करें जिसमें 1 से N तक N तत्व हैं। हमें (nums1[i1] + nums1[i2] + का मान ज्ञात करना है। .. nums1[ik])^2 + (nums2[i1] + nums2[i2] + ... nums2[ik])^2 जहां {i1, i2, ... ik} सेट एस का खाली उपसमुच्चय नहीं है ।

इसलिए, यदि इनपुट nums1 =[-1, 6] nums2 =[5, 4] जैसा है, तो आउटपुट 106 होगा क्योंकि

  • (-1)^2 + (5)^2 =26
  • (6)^2 + (4)^2 =50
  • (-1 + 6)^2 + (5 + 4)^2 =106

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

  • बनाम :=जोड़े की एक सूची (nums1[i], nums2[i]) प्रत्येक i के लिए 0 से लेकर nums1 - 1 के आकार तक के लिए
  • बनाम :=सॉर्ट बनाम टैन-व्युत्क्रम v[1]/v[0] प्रत्येक वी बनाम बनाम
  • के लिए
  • सर्वश्रेष्ठ:=0
  • मैं के लिए 0 से बनाम -1 के आकार के बीच में, करते हैं
    • यू:=बनाम[i]
    • l :=u[0]*u[0]+u[1]*u[1]
    • बनाम और बनाम की संक्षिप्त सूची में प्रत्येक v के लिए इंडेक्स i+1 से (i+ आकार बनाम -1) तक, करें
      • t1 :=(u[0]+v[0], u[1]+v[1])
      • t2 :=t1[0]*t1[0]+t1[1]*t1[1]
      • यदि t2>=l, तो
        • यू :=t1
        • l :=t2
    • अगर l> सबसे अच्छा, तो
      • सर्वश्रेष्ठ:=एल
    • यू:=बनाम[i]
    • l :=u[0]*u[0]+u[1]*u[1]
    • प्रत्येक v के लिए बनाम बनाम बनाम की संक्षिप्त सूची को फिर से इंडेक्स i+1 से i+ बनाम -1 के आकार में उलट दें], करें
      • t1 :=(u[0]+v[0], u[1]+v[1])
      • t2 :=t1[0]*t1[0]+t1[1]*t1[1]
      • यदि t2>=l, तो
        • यू :=t1
        • l :=t2
    • अगर l> सबसे अच्छा, तो
  • सर्वोत्तम वापसी

उदाहरण

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

from math import atan2
def solve(nums1, nums2):
   vs = zip(nums1,nums2)
   vs = sorted(vs, key=lambda v: atan2(v[1],v[0]))

   best = 0
   for i in range(len(vs)):
      u = vs[i]
      l = u[0]*u[0]+u[1]*u[1]
      for v in (vs+vs)[i+1:(i+len(vs))]:
         t1 = (u[0]+v[0],u[1]+v[1])
         t2 = t1[0]*t1[0]+t1[1]*t1[1]
         if t2 >= l:
            u = t1
            l = t2
      if l > best:
         best = l
      u = vs[i]
      l = u[0]*u[0]+u[1]*u[1]
      for v in reversed((vs+vs)[i+1:(i+len(vs))]):
         t1 = (u[0]+v[0],u[1]+v[1])
         t2 = t1[0]*t1[0]+t1[1]*t1[1]
         if t2 >= l:
            u = t1
            l = t2
         if l > best:
            best = l
   return best

nums1 = [-1, 6]
nums2 = [5, -4]
print(solve(nums1, nums2))

इनपुट

[-1, 6], [5, -4]

आउटपुट

52

  1. पायथन का उपयोग करके अधिकतम संभावना के साथ पथ खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास n नोड्स के साथ एक अप्रत्यक्ष भारित ग्राफ है (नोड्स 0 से आगे गिने जाते हैं), यह ग्राफ एज सूची का उपयोग करके इनपुट के रूप में दिया जाता है, प्रत्येक किनारे ई के लिए, उस किनारे की संभावना [ई] को पार करने की सफलता की संभावना है। हमारे पास प्रारंभ और अंत नोड्स भी हैं, हमें शुरुआत स

  1. अधिकतम तीन नंबर खोजने के लिए पायथन प्रोग्राम

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो तीन अंकों से अधिकतम राशि का पता लगाता है। हमारे पास तीन संख्याएँ होंगी, और हमारा लक्ष्य उन तीन संख्याओं में से अधिकतम संख्या ज्ञात करना है। आइए बेहतर समझ के लिए कुछ नमूना परीक्षण मामलों को देखें। Input: a, b, c = 2, 34, 4 Output: 34 Input: a

  1. दिए गए वर्णों का उपयोग करके संभावित शब्दों को प्रिंट करने के लिए पायथन प्रोग्राम

    इस ट्यूटोरियल में, हम दिए गए पात्रों के साथ सभी संभावित शब्द खोजने जा रहे हैं। आइए बेहतर समझ के लिए कुछ परीक्षण मामलों को देखें। Input: words = ["hi", "hello", "bye", "good"] characters = ["h", "i", "b", "y", "e&quo