ধরুন আমাদের একটি অ্যারে আছে যাকে বলা হয়। আমাদের কিছু ক্রিয়াকলাপ সঞ্চালন করতে হবে যাতে এটি এই শর্তগুলি সন্তুষ্ট করে -
-
arr-এর প্রথম উপাদানটি 1 হতে হবে।
-
যেকোনো 2টি সন্নিহিত উপাদানের মধ্যে পরম পার্থক্য অবশ্যই 1 হতে হবে।
এবং দুটি অপারেশন আছে। আমরা এই দুই ধরনের ক্রিয়াকলাপ যেকোনবার করতে পারি -
-
arr-এর যেকোন মানকে একটি ছোট ধনাত্মক সংখ্যায় কমিয়ে দিন।
-
যে কোনো ক্রমে arr-এর উপাদানগুলিকে পুনরায় সাজান।
প্রদত্ত শর্তগুলি সন্তুষ্ট করার জন্য ক্রিয়াকলাপগুলি সম্পাদন করার পরে আমাদের সম্ভাব্য সর্বাধিক সম্ভাব্য মান খুঁজে বের করতে হবে৷
সুতরাং, যদি ইনপুটটি arr =[3,3,2,3,2] এর মত হয়, তাহলে আউটপুট হবে 3 কারণ, আমরা শেষ উপাদানটিকে 1-এ কমিয়ে আনতে পারি, তারপর তাদের [1,2,3,3'-এর মতো পুনরায় সাজাতে পারি। ,3], এবং সর্বোচ্চ 3।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
তালিকা সাজান arr
-
arr[0] :=1
-
আমি রেঞ্জ 1 থেকে arr - 1 এর আকারের জন্য, do
-
arr[i] :=সর্বনিম্ন (arr[i - 1] + 1) এবং arr[i]
-
-
সর্বোচ্চ arr ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(arr): arr.sort() arr[0] = 1 for i in range(1, len(arr)): arr[i] = min(arr[i - 1] + 1, arr[i]) return max(arr) arr = [3,3,2,3,2] print(solve(arr))
ইনপুট
[3,3,2,3,2]
আউটপুট
3