题目
答案
#include<stack>
#include<iostream>
using namespace std;
struct node{
int n,a,b,c;
node(int m,int x,int y,int z):n(m),a(x),b(y),c(z){}
};
int main()
{
int n;
cin>>n;
stack<node> s;
s.push(node(n,'a','b','c'));
while(!s.empty())
{
node t=s.top();
s.pop();
if(t.n==1) printf("%c -> %c\n",t.a,t.c);
else
{
s.push(node(t.n-1,t.b,t.a,t.c));
s.push(node(1,t.a,t.b,t.c));
s.push(node(t.n-1,t.a,t.c,t.b));
}
}
}
问题总结
- push的内容为node(n,‘a’,‘b’,‘c’),不能像递归一样直接输入n,‘a’,‘b’,‘c’
- 记得输出时加上回车
- 在使用堆栈函数是不要忘了堆栈名,即s.push()而不是push()