ধরুন আমাদের একটি সংখ্যা n আছে। আমাদের নিম্নলিখিত উপায়ে n + 1 দৈর্ঘ্যের একটি অ্যারে তৈরি করতে হবে −
-
A[0] =0
-
A[1] =1
-
A[2 * i] =A[i] যদি 2 <=2 * i <=n
-
A[2 * i + 1] =A[i] + A[i + 1] যদি 2 <=2 * i + 1 <=n
অবশেষে আমাদের অ্যারের সংখ্যায় সর্বাধিক সংখ্যা খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট n =5 এর মত হয়, তাহলে আউটপুট হবে 3 কারণ
-
A[0] =0
-
A[1] =1
-
A[2] =A[1] =1
-
A[3] =A[1] + A[2] =1 + 1 =2
-
A[4] =A[2] =1
-
A[5] =A[2] + A[3] =1 + 2 =3
-
A[6] =A[3] =2
তাই সর্বোচ্চ 3
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
A :=0 থেকে n
পর্যন্ত একটি নতুন তালিকা -
প্রতিটি উপাদানের জন্য i এ, করুন
-
যদি আমি 0 এর মত হয় বা i 1 এর মত হয়, তাহলে
-
পরবর্তী পুনরাবৃত্তিতে যান
-
-
অন্যথায় যখন আমি সমান, তারপর
-
A[i] :=A[i/2 এর পূর্ণসংখ্যা]
-
-
অন্যথায়,
-
A[i] :=A[i/2 এর পূর্ণসংখ্যা] + A[(i/2 এর পূর্ণসংখ্যা) + 1]
-
-
-
A
এর সর্বাধিক উপাদান ফেরত দিন
উদাহরণ (পাইথন)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def সমাধান(n):A =তালিকা(পরিসীমা(0,n+1)) A এর জন্য i:যদি i ==0 বা i ==1:চালিয়ে যান elif i%2 ==0:A[i ] =A[i//2] অন্য:A[i] =A[i//2] + A[(i//2) + 1] রিটার্ন সর্বোচ্চ(A)n =5print(solve(n))প্রে>ইনপুট
5আউটপুট
3