monyca98

aranjamente backtracking

May 24th, 2016
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. int succesor(int st[20],int n,int k)
  4. { if(st[k]<n)
  5. { st[k]++;
  6. return 1;
  7. }
  8. else
  9. return 0;
  10. }
  11. int valid(int st[20],int k)
  12. { for(int i=1;i<k;i++)
  13. if(st[k]==st[i])
  14. return 0;
  15. return 1;
  16. }
  17. int tipar(int st[20],int m)
  18. { for(int i=1;i<=m;i++)
  19. cout<<st[i];
  20. cout<<endl;
  21. }
  22. void bt(int n,int m,int k,int st[20])
  23. { int as,ev;
  24. k=1;
  25. st[k]=0;
  26. while(k>0)
  27. { as=1;
  28. ev=0;
  29. while(as && !ev)
  30. { as=succesor(st,n,k);
  31. if(as)
  32. ev=valid(st,k);
  33. }
  34. if(as)
  35. if(k==m)
  36. tipar(st,m);
  37. else
  38. { k++;
  39. st[k]=0;
  40. }
  41. else
  42. k--;
  43. }
  44. }
  45. int main()
  46. { int n,k,st[20],m;
  47. cin>>n>>m;
  48. bt(n,m,k,st);
  49.  
  50. }
Add Comment
Please, Sign In to add comment