社区
数据结构与算法
帖子详情
如何求入栈顺序为1234……N的序列的所有可能的出栈序列?
zjm84812
2003-12-29 04:49:08
递归?用树?
...全文
2344
16
打赏
收藏
如何求入栈顺序为1234……N的序列的所有可能的出栈序列?
递归?用树?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
aaalife
2004-01-04
打赏
举报
回复
heihei
不知道
morris
2004-01-03
打赏
举报
回复
也就是2C(2n,n)/(n+1)
快快给分啊
morris
2004-01-03
打赏
举报
回复
N的catalan数
查查组合数学的书
孩皮妞野
2004-01-03
打赏
举报
回复
就是N的全排列吧。
用回溯法打印N的全排列就得到了本问题的等价解。
zjm84812
2004-01-03
打赏
举报
回复
aaalife(小神),你的热情我领了,不过你不会连木下藤吉郎都不知道把?
aaalife
2004-01-03
打赏
举报
回复
楼主好像一直没来哎~~~~~~~~~~~~
抵制日货~~!!
^_^
aaalife
2004-01-03
打赏
举报
回复
void stackseq(stack *input, stack *s, stack *output) {
/* 来自考研网严蔚敏老师的解法*/
if(stackempty(input) && stackempty(s)) outputstack(output);
else {
if(!stackempty(input)) {
push(s, pop(input));
stackseq(input, s, output);
push(input, pop(s));
}
if(!stackempty(s)) {
push(output, pop(s));
stackseq(input, s, output);
push(s, pop(output));
}
}
}
aaalife
2004-01-03
打赏
举报
回复
啊啊啊
我给的网址里面不是有源程序吗??????????????????????????
???????????????????????????????、
算了
还是我给你们贴出来吧~~~~~~~~~~
#include <stdio.h>
typedef struct {
int *stk;
int top;
int size;
} stack;
void initstack(stack *s, int n) {
s->stk = (int*)malloc((s->size=n) * sizeof(int));
s->top = 0;
}
void copystack(stack *ss, stack *s) {
int i;
if(ss->stk) free(ss->stk);
ss->stk = (int*)malloc((ss->size=s->size) * sizeof(int));
ss->top = s->top;
for(i=s->top-1; i>=0; i--) ss->stk[i] = s->stk[i];
}
void outputstack(stack* s) {
int i;
for(i=0; i<s->top; i++) printf("%d ", s->stk[i]);
printf("\n");
}
int stackempty(stack* s) {
return !s->top;
}
void push(stack* s, int x) {
s->stk[s->top++] = x;
}
int pop(stack* s) {
return s->stk[--s->top];
}
void stackseq(stack *input, stack *s, stack *output) {
/*初始状态:栈input中存放要输入的元素,s, output为空
结束状态:input 和 s 均为空 */
stack ii, ss, oo;
if(stackempty(input)) { /*如果数据已经全部输入完毕*/
if(stackempty(s)) outputstack(output); /*而且栈中也没有剩余,则输出序列*/
else {
push(output, pop(s)); /*栈中元素进入输出序列*/
stackseq(input, s, output); /*重新调度*/
}
}
else { /*还有元素要输入*/
if(!stackempty(s)) { /*我们需要保存现有状态*/
initstack(&ii, 1); copystack(&ii, input);
initstack(&ss, 1); copystack(&ss, s);
initstack(&oo, 1); copystack(&oo, output);
push(&oo, pop(&ss));
stackseq(&ii, &ss, &oo);
}
push(s, pop(input)); /*再输入一个元素*/
stackseq(input, s, output);
}
}
void main() {
int i;
stack input, s, output;
initstack(&input, 20);
initstack(&s, 20);
initstack(&output, 20);
for(i=3; i>0; i--) push(&input, i);
stackseq(&input, &s, &output);
}
========================================
12s
2004-01-02
打赏
举报
回复
3
基本算法如下:
#define N 5
i=0;
当i<N时循环
将前i个数压入栈;
释放栈中所有的数;
j从i+1到N循环 执行
输出剩余的数;
i++;
12s
2004-01-02
打赏
举报
回复
楼主可能是个日本人,中文不明白,所以没有理解到大家的意思哦!!
不知道有没源程序?
aaalife
2003-12-30
打赏
举报
回复
如果入栈是1...n出战只能是n..1啊
楼主考虑的太简单啦~~~~
如果 1 已经入栈,此时 2 还未入栈,这时我们可以 让 2 入栈,也可以先让 1 出栈,再让 2 入栈,以后依次类推-------
注意的是 不是要 N 个数全都入栈后才可以执行出栈操作的,随时都是可以进行出栈的。
来这里看看
http://expert.csdn.net/Expert/topic/2351/2351525.xml?temp=.1929743
楼主,你的名字咋像日本人的??!!! 偶觉得十分di不爽~~~~寒!!!
o1n
2003-12-29
打赏
举报
回复
递归。
dengsf
2003-12-29
打赏
举报
回复
对 1-n 的入栈序列。
若 1 排在出栈序列的第 i 位,
则 它之前出栈的必是 2-i,
而 i+1 ~ n 则必在 1 之后出栈。
这样 2~i 和 i+1 ~ n 也自成一个 入栈-出栈 对,但长度比 1-n 的要少。
递归如上。
LeeMaRS
2003-12-29
打赏
举报
回复
只需要递归就可以了.
NowCan
2003-12-29
打赏
举报
回复
不是一次全部进占,而是分批的。
比如,用<-表示进占,->表示出站
1<-
2<-
2->
3<-
3->
1->
...
如此,明白了?
BinaryTreeEx
2003-12-29
打赏
举报
回复
这个题目我看过几次了,就是不明白出战的所有可能序列。如果入栈是1...n出战只能是n..1啊。烦请楼主指教一下。
特殊数系列之卡特兰数
一个栈(无穷大)的进栈
序列
为1,2,3,..n,有多少个不同的
出栈
序列
? 类似:有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的...
数据结构魔王语言
当遇到开括号时,元素依次
入栈
,直到遇到闭括号,然后将栈顶元素
出栈
并按照规则进行处理,形成新的
序列
,再将新
序列
入栈
。非括号字符的处理相对简单,可以直接根据规则进行转换。 源代码中定义了两个结构体,`Stack...
求
入栈
顺序
为
1234
……N的
序列
的所有
可能
的
出栈
序列
【代码】
求
入栈
顺序
为
1234
……N的
序列
的所有
可能
的
出栈
序列
。
python
1234
出栈
_
求
入栈
顺序
为
1234
……N的
序列
的所有
可能
的
出栈
序列
class Program{private static void Fun(int x, int n, Stack stack, List outList,ref int count){if (outList.Count == n){count++;Console.WriteLine(string.Join(',', outList));}if (x <= n){stack.Push(x);...
出栈
序列
:
入栈
顺序
为从1到n,输入
出栈
顺序
,判断它是否合法。
出栈
序列
:
入栈
顺序
为从1到n,输入
出栈
顺序
,判断它是否合法。
数据结构与算法
33,029
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章