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

पायथन में एक सरणी की न्यूनतम समायोजन लागत पाएं


मान लीजिए कि हमारे पास धनात्मक संख्याओं की एक सरणी है; हम उस सरणी सरणी से प्रत्येक तत्व को प्रतिस्थापित करते हैं ताकि सरणी में दो आसन्न तत्वों के बीच का अंतर किसी दिए गए लक्ष्य से कम या बराबर हो। अब, हमें समायोजन लागत को कम करना होगा, इसलिए नए मूल्य और पुराने मूल्य के बीच अंतर का योग। अधिक सटीक रूप से, हम ∑|A[i] - Anew[i]| . को छोटा करते हैं जहाँ मैं 0 से n-1 की सीमा में, यहाँ n को A के आकार के रूप में दर्शाया गया है और Anew वह सरणी है जिसका आसन्न अंतर लक्ष्य से कम या उसके बराबर है।

इसलिए, यदि इनपुट [56, 78, 53, 62, 40, 7, 26, 61, 50, 48], लक्ष्य =20 जैसा है, तो आउटपुट 25

होगा।

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

  • n :=गिरफ्तारी का आकार

  • तालिका :=[[0 के लिए मैं 0 से एम + 1 की सीमा में] के लिए मैं 0 से n की सीमा में]

  • j के लिए 0 से M + 1 की सीमा में, करें

    • टेबल[0, जे] :=|j - arr[0]|

  • 1 से n की सीमा में i के लिए, करें

    • j के लिए 0 से M + 1 की सीमा में, करें

      • टेबल [i, j] :=100000000

      • k के लिए अधिकतम (j-लक्ष्य और 0) और न्यूनतम (M और j + लक्ष्य) की सीमा में, करें

        • तालिका[i,j] =न्यूनतम तालिका[i,j], तालिका[i - 1,k] + |arr[i] - j|

  • उत्तर :=10000000

  • j के लिए 0 से M + 1 की सीमा में, करें

    • ans =न्यूनतम उत्तर और तालिका [n-1, j]

    • वापसी उत्तर

उदाहरण

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

M = 100
def get_min_cost(arr, target):
   n = len(arr)
   table = [[0 for i in range(M + 1)] for i in range(n)]
   for j in range(M + 1):
      table[0][j] = abs(j - arr[0])
   for i in range(1, n):
      for j in range(M + 1):
         table[i][j] = 100000000
         for k in range(max(j - target, 0), min(M, j + target) + 1):
            table[i][j] = min(table[i][j], table[i - 1][k] + abs(arr[i] - j))
   ans = 10000000
   for j in range(M + 1):
      ans = min(ans, table[n - 1][j])
   return ans
arr= [56, 78, 53, 62, 40, 7, 26, 61, 50, 48]
target = 20
print(get_min_cost(arr, target))

इनपुट

[56, 78, 53, 62, 40, 7, 26, 61, 50, 48], 20

आउटपुट

35

  1. पायथन में न्यूनतम लागत वाले शहरों को जोड़ना

    मान लीजिए कि 1 से N तक N शहरों की संख्या है। हमारे पास कनेक्शन हैं, जहां प्रत्येक कनेक्शन [i] [शहर 1, शहर 2, लागत] है, यह शहर 1 और शहर 2 को एक साथ जोड़ने की लागत का प्रतिनिधित्व करता है . हमें न्यूनतम लागत का पता लगाना होगा ताकि शहरों की प्रत्येक जोड़ी के लिए, कनेक्शन का एक मार्ग मौजूद हो (संभवतः लं

  1. पायथन प्रोग्राम में सरणी का योग ज्ञात करें

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सरणी दी गई है, जिसकी हमें सरणी के योग की गणना करने की आवश्यकता है। योग प्राप्त करने के लिए प्रत्येक अनुक्रमणिका में संपूर्ण सरणी और तत्व को पार करने के लिए पाशविक-बल दृष्टिकोण की चर्चा नीचे प्रत्येक अनुक्रमण

  1. सरणी का योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सरणी को देखते हुए, हमें दिए गए सरणी के योग की गणना करने की आवश्यकता है। यहां हम ब्रूट-फोर्स अप्रोच का अनुसरण कर सकते हैं, यानी एक सूची को पार करना और प्रत्येक तत्व को एक खा