👤

( C++) Am nevoie de un algoritm care determină cea mai lunga secvenţă care se repetă într-un şir.


Exemplu: m=8, X={1, 4, -1, 5, 10, 1, 4, 17};

lungimea 2, poziţiile de început i1=2 şi i2=6;


Răspuns :

#include <iostream>

using namespace std;

int main(){

   int n, i, li, ls, t, k, m[1000];

   //Declarare date

   cin >> n;

   for(i=0;i<n;i++){

       cin >> m[i];

   }

   //Cautare secventa maxima care se repeta

   int mx=0, cr=0;

   for(li=0;li<n;li++){

       for(ls=li;ls<n;ls++){

           cr=ls-li;

           for(t=ls+1;t<n;t++){

               bool ok=1;

               for(k=0;k<=cr && ok;k++){

                   if(m[li+k]!=m[t+k]) ok=0;

               }

               if(ok){

                   if(cr > mx) mx=cr;

               }

           }

       }

   }

   cout << mx+1;

}

Vezi imaginea Andrei750238