永发信息网

出栈问题...

答案:1  悬赏:0  手机版
解决时间 2021-05-04 19:19

有两个栈,S1和S2,其中S1中有n个不同的元素,S2为空。现在可以做这样两种操作:
  1)从S1中取出一个元素放入S2中;
  2)将S2最顶端元素弹出(弹出元素计入弹出序列,不再参与下面的操作)。
  直到所有元素都被弹出为止,问不同的弹出顺序有多少种?

输入


  输入包含多组数据。每组数据包含一个数n(n<=20),为元素个数。


输出

  对于每一组输入,输出一行一个整数,即不同的弹出顺序有多少种。

样例输入

4


样例输出

14


提示


样例的弹出顺序可以是:1234、1243、1324、1342、1432、2134、2143、2314、2341、2431、3214、3241、3421、4321这14种。

最佳答案


#include<stdio.h>


#define MaxLen 10


struct node{


int data[MaxLen];


int top;


}s;


int total=4;


void Initstack()


{s.top=-1;}


void push(int n)


{


s.top++;


s.data[s.top]=n;


}


int pop()


{


int temp;


temp=s.data[s.top];


s.top--;


return temp;


}


int Emptys()


{


if (s.top==-1) return 1;


else return 0;


}


void process(int pos,int path[],int curp)


{


int m,i;


if (pos<total)


{


push(pos+1);


process(pos+1,path,curp);


pop();


}


if (!Emptys())


{


m=pop();


path[curp]=m;


curp++;


process(pos,path,curp);


push(m);


}


if (pos==total && Emptys())


{


for (i=0;i<curp;i++)


printf("%d",path[i]);


printf("\n");


}


}


void main()


{


int path[MaxLen];


Initstack();


push(1);


printf("所有输出序列:\n");


process(1,path,0);


}


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
自由幻想花妖是什么怪?
神鬼传奇骑士应该注重防御还是注重攻击
表达与众不同的诗词,与众不同的名言海伦凯勒
做的梦成真了?
DNF狂战怎么连招?怎么加点?
有什么好看的贴吧,有哪些贴吧比较好? 200分
彩王电视机遥控器
清华源会计培训地址在哪,我要去那里办事
最近肚子总是在有规律的时间饿,咋回事?
谁能告诉我那里可以下载1.6电脑人僵尸版
世界末日到的前一天你会做…
AK-47为什么在QQ查找里没有,我查过AK-48、AK
赞美枸杞的诗句,黑枸杞用量每天多少
如果当两个人没感情了分居三年多了还受法律保
初一乘法公式问题
推荐资讯
你喜欢谁的歌
常熟尚湖花园酒店-乒乓室地址在哪,我要去那
1991年5月17出生,我想知道我一生
榆林二毛站自行车租赁点地址在哪,我要去那里
为什么人总是那么自私?总想占领喜欢的人心中
一段话描写地铁站
我的超级QQ现在另一个手机开通,在那个手机没
QQ农场多少级能种完所以的地啊??
做不了恋人还可以做朋友吗?
彬芳青果批发这个地址在什么地方,我要处理点
爱国古诗词两句,跟寺庙有关的诗句
电吹风热风开始吹冷,后来就热
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?