ধরুন আমাদের কাছে ধনাত্মক সংখ্যার একটি অ্যারে আছে; আমরা সেই অ্যারে অ্যারে থেকে প্রতিটি উপাদান প্রতিস্থাপন করি যাতে অ্যারের দুটি সংলগ্ন উপাদানের মধ্যে পার্থক্য একটি নির্দিষ্ট লক্ষ্যের চেয়ে কম বা সমান হয়। এখন, আমাদের সমন্বয় খরচ কমাতে হবে, তাই নতুন মান এবং পুরানো মানের মধ্যে পার্থক্যের যোগফল। আরও স্পষ্টভাবে, আমরা ∑|A[i] – নতুন করে [i]| ছোট করি যেখানে i রেঞ্জ 0 থেকে n-1, এখানে n কে A-এর আকার হিসাবে চিহ্নিত করা হয়েছে এবং নতুন হল অ্যারে যার সংলগ্ন পার্থক্য লক্ষ্যের চেয়ে কম বা সমান।
সুতরাং, যদি ইনপুট হয় [56, 78, 53, 62, 40, 7, 26, 61, 50, 48], লক্ষ্য =20, তাহলে আউটপুট হবে 25
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
n :=arr এর আকার
-
সারণী :=[[0 ০ থেকে M + 1 রেঞ্জের i এর জন্য] 0 থেকে n রেঞ্জের i জন্য]
-
0 থেকে M + 1 রেঞ্জের মধ্যে j এর জন্য, করুন
-
টেবিল[0, j] :=|j - arr[0]|
-
-
1 থেকে n রেঞ্জের জন্য, করুন
-
0 থেকে M + 1 রেঞ্জের মধ্যে j এর জন্য, করুন
-
টেবিল[i, j] :=100000000
-
k-এর জন্য সর্বাধিক (j-টার্গেট এবং 0) এবং সর্বনিম্ন (M এবং j + লক্ষ্য) পরিসরে, করুন
-
টেবিল[i,j] =সর্বনিম্ন টেবিল[i,j], টেবিল[i - 1,k] + |arr[i] - j|
-
-
-
-
উত্তর :=10000000
-
0 থেকে M + 1 রেঞ্জের মধ্যে j এর জন্য, করুন
-
ans =সর্বনিম্ন উত্তর এবং টেবিল[n-1, j]
-
উত্তর ফেরত দিন
-
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
M =100def get_min_cost(arr, target):n =len(arr) টেবিল =[[0 এর জন্য i রেঞ্জে (M + 1)] i-এর জন্য range(n)] j-এ j এর জন্য (M + 1) ):টেবিল[0][j] =abs(j - arr[0]) রেঞ্জে i এর জন্য (1, n):j এর জন্য রেঞ্জে (M + 1):টেবিল[i][j] =k এর জন্য 100000000 পরিসরে(সর্বোচ্চ(j - টার্গেট, 0), min(M, j + টার্গেট) + 1):টেবিল[i][j] =min(table[i][j], table[i - 1][k ] + abs(arr[i] - j)) ans =10000000 রেঞ্জে j এর জন্য (M + 1):ans =min(ans, table[n - 1][j]) ansarr=[56, 78, 53 ফেরত দিন , 62, 40, 7, 26, 61, 50, 48] টার্গেট =20 প্রিন্টইনপুট
<প্রে>[56, 78, 53, 62, 40, 7, 26, 61, 50, 48], 20
আউটপুট
35