Advertisement
J00ker

Untitled

Oct 2nd, 2015
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. int st[100], a[100], n;
  8.  
  9. void Init(int k)
  10. {
  11.     st[k] = 0;
  12. }
  13.  
  14. int Succesor(int k)
  15. {
  16.     if(st[k] < n)
  17.     {
  18.         st[k]++;
  19.         return 1;
  20.     }
  21.     return 0;
  22. }
  23.  
  24. int Valid(int k)
  25. {
  26.     for(int i = 1; i <  k; i++)
  27.         if(st[k] == st[i])
  28.             return 0;
  29.     return 1;
  30. }
  31.  
  32. int Solutie(int k)
  33. {
  34.     if(k == n+1)
  35.         return 1;
  36.     return 0;
  37. }
  38.  
  39.  
  40. ofstream fout("permutari2.out");
  41. void Tipar()
  42. {
  43.     for(int i = 1; i <= n; i++)
  44.         fout << a[st[i]] << " ";
  45.     fout << "\n";
  46. }
  47.  
  48. void backtrack(int k)
  49. {
  50.     if(Solutie(k))
  51.         Tipar();
  52.     else
  53.     {
  54.         Init(k);
  55.         while(Succesor(k))
  56.             if(Valid(k))
  57.                 backtrack(k+1);
  58.     }
  59. }
  60.  
  61. int main()
  62. {
  63.     ifstream fin("permutari2.in");
  64.     fin >> n;
  65.     for(int i = 1; i <= n; i++)
  66.         fin >> a[i];
  67.     sort(a, a+n+1);
  68.     for(int i = 1; i <= n; i++)
  69.         cout<< a[i];
  70.     backtrack(1);
  71.     fin.close();
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement