a53

combinari2

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