Advertisement
a53

Siruri

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