/*题意:给出一个的整数序列,将其压入栈中,打印出所有可能出栈序列(按出栈时间)。【比如1 2 3作为输入,3 1 2是不可能的】。
* 这是即兴想要做的题目(应该是考研常考的),故没有怎么思考就动手敲了,所以错误了很多次才成功。
* 基本思路是利用回溯,回溯最明显的代码特征体现在f()函数中递归调用
* f(S,R,O)后的“恢复现场”。这跟朱墨的八皇后做法思想一致。
* nacus 2011.10
* */
#include<iostream>
using namespace std;
#include<cstring>
#include<iomanip>
struct Data
{
int a[100];
int len;
};
int cas = 1;
int n;
void
f(Data &S, Data &R, Data &O)
{
int t;
if (O.len == n)
{
cout << setw(4) << cas++ << ":";
for (int i = 0; i < n; i++)
cout << setw(3) << O.a[i];
cout << endl;
return;
}
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余3页未读,立即下载