Advertisement
a53

eliminaren

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