Advertisement
Guest User

Untitled

a guest
Nov 21st, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <sstream>
  5.  
  6. using namespace std;
  7. struct wyraz
  8. {
  9. string wyraz;
  10. };
  11.  
  12. int podciag(wyraz * sek1, wyraz * sek2, int dl_wyr1, int dl_wyr2)
  13. {
  14. int **tab = new int * [dl_wyr2+1];
  15. for (int i = 0 ; i <= dl_wyr2 ; i++)
  16. {
  17. tab[i] = new int [dl_wyr1+1];
  18. }
  19. for(int i = 0; i<=dl_wyr2; i++)
  20. {
  21. for (int j = 0; j <= dl_wyr1; j++)
  22. {
  23. tab[i][j] = 0;//wypełniam całą tablicę zerami w tym najważniejsy pierwzy wiersz i pierwsza kolumne
  24. }
  25. }
  26. for(int i=1; i<=dl_wyr1; i++)
  27. {
  28. for(int j=1; j<=dl_wyr2; j++)
  29. {
  30. if(sek1[1].wyraz[i]==sek2[1].wyraz[j])
  31. {
  32. tab[j][i] = tab[j-1][i-1]+1;
  33. }
  34. else
  35. {
  36. if(tab[j-1][i]>=tab[j][i-1])
  37. {
  38. tab[j][i]=tab[j-1][i];
  39. }
  40. else
  41. {
  42. tab[j][i] = tab[j][i-1];
  43. }
  44. }
  45. }
  46. }
  47. return tab[dl_wyr2][dl_wyr1];
  48. }
  49. int main()
  50. {
  51. fstream in;
  52. ofstream out;
  53. string lin;
  54. string wyraz1;
  55. int n,licz=0;
  56. in.open("In0301.txt",ios::in);
  57. in >>n;
  58. wyraz * sekwencja = new wyraz [2*n];
  59. wyraz * sekwencja1 = new wyraz[n];
  60. wyraz * sekwencja2 = new wyraz[n];
  61. for (int i =0 ; i <=2*n; i++)
  62. {
  63. getline(in,lin);
  64. istringstream zmienna(lin);
  65. while (zmienna >> wyraz1)
  66. {
  67. sekwencja[licz].wyraz = wyraz1;
  68. licz++;
  69. }
  70. }
  71. licz=0;
  72. for(int i=0; i<2*n; i++) //utworzenie dwóch tablic w celu rozdzielenia i porównywania
  73. {
  74. sekwencja1[licz] = sekwencja[i];
  75. i++;
  76. sekwencja2[licz] = sekwencja[i];
  77. licz++;
  78. }
  79. out.open("Out0301.txt",ios::out);
  80. for(int i = 0; i<n ; i++)
  81. {
  82. int dl1=sekwencja1[i].wyraz.length();
  83. int dl2=sekwencja2[i].wyraz.length();
  84. if(out.good() == true)
  85. {
  86. out << podciag(sekwencja1,sekwencja2,dl1,dl2)<<" ";
  87. }
  88.  
  89. }
  90. return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement