Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // fiind data o multime de n cuburi, fiecare fiind caracterizat
- // de lungimea laturii si culoarea sa. Sa se scrie un program
- // care sa genereze toate turnurile care se pot forma cu k
- // cuburi. A.I. 2 cuburi vecine sa nu aiba aceeasi culoare
- // iar deasupra unui cub, sa nu se poata aseza, unul cu latura mai mare
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream in("date.in");
- int n, k;
- int x[10], uz[10];
- void date_in();
- void quickSort(int, int);
- void back(int);
- int check(int);
- void date_out();
- struct cub
- {
- int lenght;
- char color[15];
- }A[10];
- int main()
- {
- date_in();
- quickSort(1, n);
- //back(1);
- date_out();
- return 0;
- }
- void date_in()
- {
- in >> n >> k;
- for(int j = 1; j <= n; j++)
- in >> A[j].lenght >> A[j].color;
- }
- void quickSort(int s, int d)
- {
- int i = s, j = d;
- int m;
- m = (s + d) / 2;
- int pivot = A[m].lenght;
- while (i <= j)
- {
- while (A[i].lenght > pivot)
- i++;
- while (A[j].lenght < pivot)
- j--;
- if (i <= j)
- {
- m = A[i].lenght;
- A[i].lenght = A[j].lenght;
- A[j].lenght = m;
- i++;
- j--;
- }
- }
- if (s < j)
- quickSort(s, j);
- if (i < d)
- quickSort(i, d);
- }
- void back(int i)
- {
- for(int j = 1; j <= n; j++)
- {
- if(!uz[j])
- {
- uz[j] = 1;
- x[i] = j;
- if(check(i))
- if(i == k)
- date_out();
- else
- back(i + 1);
- uz[j] = 0;
- }
- }
- }
- int check(int i)
- {
- if(i > 1 &&( A[i].lenght > A[i-1].lenght || strcmp(A[i].color,A[i-1].color) == 0))
- return 0;
- return 1;
- }
- void date_out()
- {
- for(int j = 1; j <= n; j++)
- cout << A[j].lenght <<"-" << A[j].color << " ";
- cout << "\n";
- }
Add Comment
Please, Sign In to add comment