- void print_valid_sequence(int i,const int n )
- {
- static int number = 0;//记录序列的个数
- static Stack<int> stack;//保存入栈的元素
- static int array[10];//保存输出的元素
- int top;//用来取top
- if(i == n+1)//递归结束条件,输出序列
- {
- ++number;
- cout<<number<<"---";
- for(int j = 0;j < n-stack.length();++j)
- cout<<array[j];//正序输出
- stack.print();//输出
- cout<<endl;
- }
- else
- {
- stack.push(i);//入栈
- print_valid_sequence(i+1,n);
- stack.pop();//为保持stack不变,出栈
- if(!stack.empty())//将栈顶元素输出
- {
- stack.getTop(top);
- array[i-stack.length()-1] = top;//将输出的元素放入array中
- stack.pop();
- print_valid_sequence(i,n);//i不变
- stack.push(top);
- }
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/251020136684.html
来源: http://www.codesnippet.cn/detail/251020136684.html