কম্পিউটার

C++ তে দীর্ঘতম ফিবোনাচি অনুসারীর দৈর্ঘ্য


ধরুন আমাদের একটি ক্রম আছে X_1, X_2, ..., X_n হল ফিবোনাচির মত যদি −

  • n>=3

  • X_i + X_{i+1} =X_{i+2} সমস্ত i + 2 <=n

    এর জন্য

এখন ধরুন ধনাত্মক পূর্ণসংখ্যাগুলির একটি কঠোরভাবে ক্রমবর্ধমান অ্যারে একটি ক্রম তৈরি করে, আমাদের A এর দীর্ঘতম ফিবোনাচি-সদৃশ অনুক্রমের দৈর্ঘ্য খুঁজে বের করতে হবে। যদি একটি বিদ্যমান না থাকে, তাহলে 0 ফেরত দিন। তাই যদি সংখ্যাটি [1,2' এর মত হয় ,3,4,5,6,7,8], তাহলে আউটপুট হবে 5। দীর্ঘতম অনুবর্তন যা ফিবোনাচি হল [1,2,3,5,8] এর মত।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • ret :=0

  • একটি মানচিত্র তৈরি করুন m, n :=অ্যারের আকার A

  • n x n

    আকারের dp নামে একটি ম্যাট্রিক্স তৈরি করুন
  • 0 থেকে n – 1

    রেঞ্জের i জন্য
    • m[A[i]] :=i

    • j এর জন্য রেঞ্জ i – 1, নিচে 0

      • req :=A[i] – A[j]

      • যখন A[i] – A[j]

        • dp[i, j] :=সর্বাধিক dp[i, j], dp[j, m[A[i] – A[j]]] + 1

      • অন্যথায় dp[i,j] :=সর্বাধিক dp[i, j] এবং 2

      • ret :=ret এবং dp[i,j]

        এর সর্বোচ্চ
  • রিটার্ন ret যখন ret>=3 অন্যথায় 0 ফেরত দিন।

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int lenLongestFibSubseq(vector<int> & A) {
      int ret = 0;
      unordered_map <int, int> m;
      int n = A.size();
      vector < vector <int> > dp(n, vector <int>(n));
      for(int i = 0; i < n; i++){
         m[A[i]] = i;
         for(int j = i - 1; j >= 0; j--){
            int req = A[i] - A[j];
            if(A[i] - A[j] < A[j] && m.count(A[i] - A[j])){
               dp[i][j] = max(dp[i][j], dp[j][m[A[i] - A[j]]] + 1);
            }else{
               dp[i][j] = max(dp[i][j], 2);
            }
            ret = max(ret, dp[i][j]);
         }
      }
      return ret >= 3 ? ret : 0;
   }
};
main(){
   vector<int> v = {1,2,3,4,5,6,7,8};
   Solution ob;
   cout << (ob.lenLongestFibSubseq(v));
}

ইনপুট

[1,2,3,4,5,6,7,8]

আউটপুট

5

  1. C++-এ দীর্ঘতম ক্রমবর্ধমান অনুক্রমের সংখ্যা

  2. C++ এ 0 এবং 1 এর সেগমেন্টের সর্বোচ্চ দৈর্ঘ্য

  3. দীর্ঘতম সাধারণ পরবর্তী সিক্যুয়েন্সের জন্য C++ প্রোগ্রাম

  4. পাইথনে দীর্ঘতম ফিবোনাচি পরবর্তী দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম