永发信息网

1,2,3,4依次进栈,出栈随时,写一算法求出所有可能出栈序列要求带注释,最好使用C或C++感谢一楼

答案:2  悬赏:50  手机版
解决时间 2021-02-27 19:08
1,2,3,4依次进栈,出栈随时,写一算法求出所有可能出栈序列要求带注释,最好使用C或C++感谢一楼
最佳答案
你要算法,从程序中归纳就行了我想到一种方法,可是有点复杂,要用到树的结构,先给你看个程序,是计算n个元素进栈,可能的出栈系列种数#define N 4int m=0,a=0,b=N;main(){inS(a,b);printf(%d,m);getch();}int inS(int a,int b){a++;b--;if(b>0) inS(a,b);if(a>0) outS(a,b);}int outS(int a,int b){a--;if(a==0&&b==0) { m++; return; }if(b>0) inS(a,b);if(a>0) outS(a,b);}若想输出这些序列,可以建立一个二叉树,二叉树的节点为操作(进栈或出栈),从根节点(第一个入栈)到叶子节点(最后一个出栈)的路径就是每个序列的操作序列,每条路径共有2N个节点,分别为每个元素的入栈和出栈操作,然后通过遍历,将这些节点输出即可建立这棵树可以用上面的递归建立,也可以用下面的方法建立①建立一颗深度为2N的满二叉树(根节点深度为1),其中根节点为IN(入栈),其他左子树为IN,右子树为OUT(出栈),这棵树共有2^(2N-1)个叶子节点,用根节点到叶子节点共有2^(2N-1)条路径②保留满足下面条件的路径,其他的剔除1)路径从根到叶出现IN和OUT总次数均为N个2)路径从根到叶出现 IN次数≥OUT次数(即出栈次数不可能多余入栈次数)然后输出保留的每条路径上节点类型为OUT的数据,即是出栈序列剔除方法可由下面方法实现1根节点赋值为1,2节点为IN,则此节点赋值为父节点的值+1,节点为OUT,则此节点赋值为父节点的值-1,3剔除节点的值为负数,或值>N的节点,或叶子节点上的值不=0的路径,剩下的就是满足条件的路径 -------------------------------------------------我想到一种方法,可以不用树的结构,只是模拟树,先贴程序#include math.h#define N 4main(){void init(int h[][],int a,int b,int k);int i,j,sum,logo,h[1000][2*N+1],s[N],a,b,n;int M=pow(2,2*N-1);n=M;for(i=0;i
全部回答
我学会了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有哪位海迷知道路飞招式日语发音
济南哪里有卖大鱼缸的,装饰用的,满意加分
have a great time 还是have great time 请给
梁名词解释
细菌和真菌与人类关系密切,在制作馒头时,D
我想问一下,现在在山东省第五地质勘察院待遇
如何调动工人的积极性
收纳盒对于耳机的保护重不重要?
自己具名的结婚喜帖内容怎么写?
卡罗拉氧传感器多少钱
哪个医学院好?毕业后好找工作?
人的双眼皮对单眼皮是显性,一对双眼皮的夫妇
嘉兰苑这个地址在什么地方,我要处理点事
形容时间很快流逝的诗句
GALERIA KAUFHOF怎么样
推荐资讯
患者男性,62岁,诊断为急性心肌梗死。本病最
买家臭豆腐地址有知道的么?有点事想过去
适用于确已成脓的疮疡的治法是A.砭镰法B.切开
某企业为增值税一般纳税人,2013年12月将部分
空气净化器一天开多少时间好
在呼和浩特买房,几月份属于淡季,我想在淡季
持有中国护照和日本国签证。从日本飞香港,中
我的信用卡查询账单显示,以使用额度7653,逾
老师,我的新手机从20:10充电到00:06期间多次
“光芒”翻译成希腊语的谐音是什么
ABCD+ACD+CD=1989,求A、B、C、D.
下列关于肺的换气的说法正确的是DA. 肺换气是
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?