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

Python में सरणी का न्यूनतम समायोजन लागत ढूंढना


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

तो, यदि इनपुट [56, 78, 53, 62, 40, 7, 26, 61, 50, 48], target = 20 की तरह है, तो आउटपुट 25 होगा।

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

  • n := arr का आकार

  • table := [[0 for i in range 0 to M + 1] for i in range 0 to n]

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

    • table[0, j] := |j - arr[0]|

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

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

      • table[i, j] := 100000000

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

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

  • ans := 10000000

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

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

    • ans वापस करें

उदाहरण

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

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] [city1, city2, cost] है जो city1 और city2 को एक साथ जोड़ने की लागत दर्शाता है। हमें न्यूनतम लागत ढूंढनी है ताकि शहरों के प्रत्येक जोड़े के लिए, कनेक्शन्स का एक पथ मौजूद हो (संभवतः लंबाई 1 का) जो उन दो शहरों क

  1. Python प्रोग्राम में ऐरे का योग खोजना Python प्रोग्राम में ऐरे का योग खोजना

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

  1. पायथन प्रोग्राम: ऐरे का योग ढूंढें पायथन प्रोग्राम: ऐरे का योग ढूंढें

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