Advertisement
Guest User

Untitled

a guest
May 15th, 2016
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include<iostream>
  2. #include<fstream>
  3. using namespace std;
  4. struct M {int lung, inizioT; M(int a=0, int b=-1){lung=a; inizioT=b;}};
  5. //M *x = new M(cont, x);
  6. //x->cont;
  7.  
  8. int scorrP(int *T,int dimT, int * P,int dimP,int iP, int iT, int cont)
  9. {
  10.     if(iP<dimP && T[iT+iP]==P[iP] && iT+iP<dimT)
  11.     {
  12.         cont++;
  13.         return scorrP(T,dimT, P, dimP, iP+1, iT, cont);
  14.     }
  15.     else
  16.         return cont;
  17. }
  18.  
  19. M match(int *T,int dimT,int* P,int dimP, int iT, int cont, int start)
  20. {
  21.     int temp_cont;
  22.    
  23.     while(iT<dimT)
  24.     {
  25.         if(T[iT]==P[0])
  26.         {
  27.             temp_cont=scorrP(T,dimT, P, dimP, 0, iT, 0);
  28.             if(temp_cont>=cont)
  29.             {
  30.                 cont=temp_cont;
  31.                 start=iT;
  32.             }
  33.         }
  34.         return match(T,dimT, P, dimP, iT+1, cont, start);
  35.     }
  36.     if (cont==0)
  37.         start=-1;
  38.     return M (cont, start);
  39. }
  40.  
  41. main()
  42. {
  43.    int T[200]={}, P[20]={}, dimT, dimP;
  44.    cin>>dimT;
  45.    for(int i=0; i<dimT;i++)
  46.      cin>>T[i];
  47.    cin>>dimP;
  48.    for(int i=0; i<dimP;i++)
  49.      cin>>P[i];
  50.    M x=match(T,dimT, P, dimP, 0,0,0);// funzione ricorsiva da fare
  51.    cout<<"[lung="<<x.lung<<" inizioT="<<x.inizioT<<']'<<endl; // e' l'occasione di ridefinire << per M
  52.    cout<<"end"<<endl;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement