fork download
  1. #include <iostream>
  2. int stack[100], level, n;
  3.  
  4. void init() {
  5. stack[level] = -1;
  6. }
  7.  
  8. void print() {
  9.  
  10. for(int i = 1; i <= n; ++i) {
  11.  
  12. if(stack[i] == 1) {
  13.  
  14. printf("%d ", i);
  15. }
  16. }
  17. printf("\n");
  18. }
  19.  
  20. int succ() {
  21. if(stack[level]<1){
  22. stack[level]++;
  23. return 1;
  24. }
  25. return 0;
  26. }
  27.  
  28. int valid() {
  29. return 1;
  30. }
  31.  
  32. int sol() {
  33. return level == n;
  34. }
  35.  
  36. void bk() {
  37. int s,v;
  38. level = 1;
  39. init();
  40.  
  41. while(level>0) {
  42. s = 1;
  43. v = 0;
  44. while(s && !v) {
  45. s = succ();
  46. if(s) v = valid();
  47. }
  48. if(s){
  49. if( sol() ) print();
  50. else {
  51. level++;
  52. init();
  53. }
  54. } else {
  55. level--;
  56. }
  57. }
  58.  
  59. }
  60.  
  61. int main(int argc, char const *argv[]) {
  62.  
  63. n = 3;
  64. bk();
  65.  
  66. return 0;
  67. }
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
3 
2 
2 3 
1 
1 3 
1 2 
1 2 3