Advertisement
GerexD

dinamikus-leghosszabb.reszsorozat

Mar 7th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int n,m,a[40],b[40],x[40][40];
  5.  
  6. void beolvas(int a[],int &n)
  7. {
  8. cout<<"n="; cin>>n;
  9. for(int i=1;i<=n;i++) cin>>a[i];
  10. }
  11.  
  12. int max(int a,int b)
  13. {
  14. if (a>b) return a;
  15. else return b;
  16. }
  17.  
  18. void visszakeres(int i,int j)
  19. {
  20. while(a[i]!=b[j])
  21. if (x[i-1][j]>x[i][j-1]) i--; else j--;
  22. if (x[i-1][j-1]>0) visszakeres(i-1,j-1);
  23. cout<<a[i]<<" ";
  24. }
  25.  
  26. int main()
  27. {
  28.  
  29. beolvas(a,n);
  30. beolvas(b,m);
  31. for(int i=1;i<=n;i++)
  32. for(int j=1;j<=m;j++)
  33. if(a[i]==b[j]) x[i][j]=1+x[i-1][j-1];
  34. else x[i][j]=max(x[i-1][j],x[i][j-1]);
  35. cout<<"A leghosszabb kozos reszsorozat hossza:"<<x[n][m];
  36. cout<<endl<<"A sorozat elemei:";
  37. visszakeres(n,m);
  38. return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement