Advertisement
Guest User

Untitled

a guest
Oct 3rd, 2016
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #include <cstdio>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. void printNumList(int level);
  7. void printNumber(int index, char *seq, const int maxLevel);
  8.  
  9. int main()
  10. {
  11.     while (1){
  12.         printf("Press 0 to exit.\n");
  13.         printf("Press 1 to do the nonrecursive mission.\n");
  14.         printf("Press 2 to do the recursive mission.\n");
  15.         int Num;
  16.         scanf("%d", &Num);
  17.  
  18.         if (Num == 0) { //exit
  19.             break;
  20.         }
  21.  
  22.         else if (Num == 1){ //nonrecursive
  23.         }
  24.         else if (Num == 2){ //recursive
  25.             printf("Please enter a number between 1 to 9: ");
  26.             int InputNum;
  27.             cin >> InputNum;
  28.  
  29.             if(InputNum > 9 || InputNum < 1) {
  30.                 printf("Invalid number, please try again.\n");
  31.             }
  32.  
  33.             // Do the process
  34.             printNumList(InputNum);
  35.         }
  36.     }
  37.  
  38.     return 0;
  39. }
  40.  
  41. void printNumList(int level)
  42. {
  43.     // create output string
  44.     char *seq = new char[level+1];
  45.     seq[level] = '\0';
  46.  
  47.     //start recursion
  48.     printNumber(0, seq, level-1);
  49. }
  50.  
  51. void printNumber(int index, char *seq, const int maxLevel)
  52. {
  53.     // recursion stop point
  54.     if (index > maxLevel)
  55.         return;
  56.  
  57.     for (char c = '0'; c <= '9'; ++c){
  58.  
  59.         // check repeat
  60.         bool repeat = false;
  61.         for (int j = 0; seq[j] != '\0'; ++j){
  62.             if ( c == seq[j]){
  63.                 repeat = true;
  64.                 break;
  65.             }
  66.         }
  67.         if (repeat)
  68.             continue;
  69.  
  70.         // assign number
  71.         seq[index] = c;
  72.         printNumber(index+1, seq, maxLevel);
  73.  
  74.         // output
  75.         if (index == maxLevel){
  76.             cout << seq << endl;
  77.         }
  78.  
  79.         // clear number in seqence
  80.         seq[index] = '\0';
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement