Advertisement
a53

Hmmm

a53
Dec 28th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3.  
  4. ifstream fin ("hmmm.in");
  5. ofstream fout("hmmm.out");
  6.  
  7. int v[15], st[15], n, pus[15], x[15], k;
  8.  
  9. bool verifPermE(){
  10. int i;
  11. for (i = 1;i <= n;i++)
  12. if (x[i] != i)
  13. return false;
  14. return true;
  15. }
  16.  
  17. int calcGrad(){
  18. int nr = 0, i;
  19. for (i = 1;i <= n;i++)
  20. x[i] = st[i];
  21. bool ok = false;
  22. while (!ok){
  23. ok = verifPermE();
  24. for (i = 1;i <= n;i++)
  25. x[i] = st[x[i]];
  26. nr++;
  27. }
  28. return nr;
  29. }
  30.  
  31. int verif (){
  32. int grad = k%calcGrad(), i, w;
  33. if (!grad){
  34. for (i = 1;i <= n;i++)
  35. if (v[i] != i)
  36. return 0;
  37. return 1;
  38. }
  39. for (i = 1;i <= n;i++){
  40. w = grad-1;
  41. while (w){
  42. x[i] = st[x[i]];
  43. w--;
  44. }
  45. if (x[i] != v[i])
  46. return 0;
  47. }
  48. return 1;
  49. }
  50.  
  51. void tipar (){
  52. int i;
  53. for (i = 1;i <= n;i++)
  54. fout << st[i] << " ";
  55. fout << '\n';
  56. }
  57.  
  58. void BKT (int k){
  59. int i;
  60. for (i = 1;i <= n;i++){
  61. if (!pus[i]){
  62. pus[i] = 1;
  63. st[k] = i;
  64. if (k == n && verif())
  65. tipar ();
  66. else BKT (k+1);
  67. pus[i] = 0;
  68. }
  69. }
  70. }
  71.  
  72. int main(){
  73. int i;
  74. fin >> n >> k;
  75. for (i = 1;i <= n;i++)
  76. fin >> v[i];
  77. BKT (1);
  78. fin.close();
  79. fout.close();
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement