Advertisement
a53

PermPrimeVec

a53
Nov 19th, 2021
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3. int n,x[20],A[20] ,uz[20],pp[20];
  4.  
  5. bool Prim(int n)
  6. {
  7. if(n<2)
  8. return false;
  9. if(n==2)
  10. return true;
  11. if(n%2==0)
  12. return false;
  13. for(int d=3;d*d<=n; ++d)
  14. if(n % d==0)
  15. return false;
  16. return true;
  17. }
  18.  
  19. void Afisare(int L)
  20. {
  21. for(int i=1 ;i<=L;++i)
  22. cout<<A[x[i]] <<' ';
  23. cout<<'\n';
  24. }
  25.  
  26. bool ok(int k)
  27. {
  28. if(k==1)
  29. return true;
  30. if(uz[ x[k] ]==1)
  31. return false;
  32. if(pp[x[k]])
  33. if(pp[x[k-1]])
  34. return false;
  35. return true;
  36. }
  37.  
  38. void Back(int k)
  39. {
  40. for(int i=1;i<=n;++i)
  41. {
  42. x[k]=i;
  43. if(ok(k))
  44. {
  45. uz[i]=1;
  46. if(k==n)
  47. Afisare(n);
  48. else
  49. Back(k+1);
  50. uz[i]=0;
  51. }
  52. }
  53. }
  54.  
  55. int main()
  56. {
  57. cin>>n;
  58. for(int i=1;i<=n;++i)
  59. cin>>A[i],pp[i]=Prim(A[i]);
  60. for(int i=1;i<n;++i)
  61. for(int j=i+1;j<=n;++j)
  62. if(A[i]>A[j])
  63. swap(A[i],A[j]),swap(pp[i],pp[j]);
  64. Back(1);
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement