fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iterator>
  5.  
  6. using namespace std;
  7.  
  8. typedef std::vector<std::string> String1D;
  9. typedef std::vector<String1D> String2D;
  10.  
  11. int main() {
  12. String2D masiv_C0(14, String1D(2));
  13. masiv_C0[0][0]="A";
  14. masiv_C0[0][1]="ADF";
  15. masiv_C0[1][0]="AB";
  16. masiv_C0[1][1]="F";
  17. masiv_C0[2][0]="AD";
  18. masiv_C0[2][1]="ADF";
  19. masiv_C0[3][0]="AF";
  20. masiv_C0[3][1]="ADF";
  21. masiv_C0[4][0]="B";
  22. masiv_C0[4][1]="BCF";
  23. masiv_C0[5][0]="BC";
  24. masiv_C0[5][1]="BC";
  25. masiv_C0[6][0]="BD";
  26. masiv_C0[6][1]="F";
  27. masiv_C0[7][0]="BF";
  28. masiv_C0[7][1]="BF";
  29. masiv_C0[8][0]="C";
  30. masiv_C0[8][1]="BC";
  31. masiv_C0[9][0]="CF";
  32. masiv_C0[9][1]="B";
  33. masiv_C0[10][0]="D";
  34. masiv_C0[10][1]="ADF";
  35. masiv_C0[11][0]="DF";
  36. masiv_C0[11][1]="ADF";
  37. masiv_C0[12][0]="E";
  38. masiv_C0[12][1]="E";
  39. masiv_C0[13][0]="F";
  40. masiv_C0[13][1]="ABDF";
  41.  
  42. // а это "образцы"
  43. String2D masiv_X0(3, String1D(2));
  44. masiv_X0[0][0]="A";
  45. masiv_X0[0][1]="ADF";
  46. masiv_X0[1][0]="C";
  47. masiv_X0[1][1]="BC";
  48. masiv_X0[2][0]="D";
  49. masiv_X0[2][1]="ADF";
  50.  
  51. String2D masiv_Y1 = masiv_C0;
  52. // цикл по образцам
  53. for (int i = 0; i < masiv_X0.size(); ++i) {
  54. // цикл по мишеням
  55. //// идём с конца, чтобы при удалени не нарушать порядок
  56. //// в итоге получается -1, поэтому счётчик знаковый
  57. for (int j = masiv_C0.size() - 1; j >= 0; --j) {
  58. // нужно ли удалять мишень
  59. bool todel = true;
  60. // цикл по символам
  61. for (int sym = 0; sym < masiv_X0[i].size(); ++sym) {
  62. // если хоть один символ не совпал
  63. if (masiv_X0[i][sym] != masiv_C0[j][sym]) {
  64. // удалять не надо
  65. todel = false;
  66. break;
  67. }
  68. }
  69. // если нужно удалить мишень
  70. if (todel) {
  71. masiv_Y1.erase(masiv_Y1.begin() + j);
  72. }
  73. }
  74. }
  75.  
  76. String2D::iterator iter = masiv_Y1.begin();
  77. // вывод
  78. while (iter != masiv_Y1.end()) {
  79. std::copy((*iter).begin(), (*iter).end(), std::ostream_iterator<std::string>(cout, " "));
  80. cout << "\n";
  81. ++iter;
  82. }
  83.  
  84. return 0;
  85. }
  86.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
AB F 
AD ADF 
AF ADF 
B BCF 
BC BC 
BD F 
BF BF 
C BC 
D ADF 
DF ADF 
F ABDF