Guest User

Untitled

a guest
Jan 21st, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. // fiind data o multime de n cuburi, fiecare fiind caracterizat
  2. // de lungimea laturii si culoarea sa. Sa se scrie un program
  3. // care sa genereze toate turnurile care se pot forma cu k
  4. // cuburi. A.I. 2 cuburi vecine sa nu aiba aceeasi culoare
  5. // iar deasupra unui cub, sa nu se poata aseza, unul cu latura mai mare
  6.  
  7. #include <iostream>
  8. #include <fstream>
  9.  
  10. using namespace std;
  11. ifstream in("date.in");
  12.  
  13. int n, k;
  14. int x[10], uz[10];
  15.  
  16. void date_in();
  17. void quickSort(int, int);
  18. void back(int);
  19. int check(int);
  20. void date_out();
  21.  
  22. struct cub
  23. {
  24.     int lenght;
  25.     char color[15];
  26. }A[10];
  27.  
  28.  
  29. int main()
  30. {
  31.     date_in();
  32.     quickSort(1, n);
  33.     //back(1);
  34.     date_out();    
  35.     return 0;
  36. }
  37.  
  38. void date_in()
  39. {
  40.     in >> n >> k;
  41.     for(int j = 1; j <= n; j++)
  42.         in >> A[j].lenght >> A[j].color;
  43. }
  44.  
  45. void quickSort(int s, int d)
  46. {
  47.     int i = s, j = d;
  48.     int m;
  49.     m = (s + d) / 2;
  50.     int pivot = A[m].lenght;
  51.     while (i <= j)
  52.     {  
  53.         while (A[i].lenght > pivot)
  54.             i++;  
  55.         while (A[j].lenght < pivot)
  56.             j--;  
  57.         if (i <= j)
  58.         {
  59.             m = A[i].lenght;
  60.             A[i].lenght = A[j].lenght;
  61.             A[j].lenght = m;
  62.             i++;  
  63.             j--;  
  64.         }  
  65.     }
  66.    
  67.     if (s < j)
  68.         quickSort(s, j);
  69.    
  70.     if (i < d)
  71.         quickSort(i, d);
  72. }  
  73.  
  74. void back(int i)
  75. {
  76.     for(int j = 1; j <= n; j++)
  77.     {
  78.         if(!uz[j])
  79.         {
  80.             uz[j] = 1;
  81.             x[i] = j;
  82.             if(check(i))
  83.                 if(i == k)
  84.                     date_out();
  85.                 else
  86.                     back(i + 1);
  87.         uz[j] = 0;
  88.         }
  89.     }
  90. }
  91.  
  92. int check(int i)
  93. {
  94.     if(i > 1 &&( A[i].lenght > A[i-1].lenght || strcmp(A[i].color,A[i-1].color) == 0))
  95.         return 0;
  96.     return 1;
  97. }
  98.  
  99. void date_out()
  100. {
  101.     for(int j = 1; j <= n; j++)
  102.         cout << A[j].lenght <<"-" << A[j].color << "  ";
  103.     cout << "\n";
  104. }
Add Comment
Please, Sign In to add comment