Advertisement
a53

sirab

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