一道题:n个元素入栈(堆栈),问有多少种出栈方式!

hillhere365 2006-08-24 08:07:15
n个元素入栈(堆栈),问有多少种出栈方式!
请给出推导过程
...全文
1098 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
caszhao 2006-08-24
  • 打赏
  • 举报
回复
推到3都正确,推导过程优点麻烦而且夹带有猜的思想在里面,你自己用上面的DFS验证一下看看,我没有装DELPHI
caszhao 2006-08-24
  • 打赏
  • 举报
回复
例如n=3, 则 123 132 213 231 321,5种,是这个意思吧,那上面n=5应该是错了
n=1 1
n=2 2
n=3 5


p[n]为总数的话,求和符号打不出,用循环表示吧
p[0]:=0;p[1]:=1;
for k:=0 to n-1 do
p[n]:=p[n]+p[k]*p[n-1-k];
hillhere365 2006-08-24
  • 打赏
  • 举报
回复
我当然是请教问题了,哪有花50分考人的
这是一道数据结构的题,我不会做,有没有正确结果
我穷举了一下:
n=1 1
n=2 2
n=5 5
n=4 14
不知道有没有错的,但一定要找到规律才行呀!
___我们要从特殊到普遍,个别到一般,具体到抽象,个性到共性嘛!!!!!!!!!!!!
caszhao 2006-08-24
  • 打赏
  • 举报
回复
最好的数学的方法以前确实没推导出来,但写过利用栈特性的递推的方法,推导也麻烦

不知道是阁下是来请教问题还是来.....,呵呵...
hillhere365 2006-08-24
  • 打赏
  • 举报
回复
主要看大家的数学底子了
嘿嘿!!!
wudi_1982 2006-08-24
  • 打赏
  • 举报
回复
1、先进先出
2、后进先出
3、乱七八糟的进,乱七八糟的出。
hillhere365 2006-08-24
  • 打赏
  • 举报
回复
哦,题目中少写了,应该是依次入栈
caszhao 2006-08-24
  • 打赏
  • 举报
回复
n个元素入栈(堆栈)应该是有顺序的吧.如果想要所有出栈结果,就模拟一下入栈出栈
假设元素是小写字母组成切,做一次DFS就可以,程序临时写,没有调试过,很久没写,可能不一定正确,思想是差不多吧.

var
top:integer;
zhan:array[1..100] of integer;

procedure try(k:integer);
begin
if c=length(z) then begin
showmessage(c);
c是其中一种出栈结果
exit;end;
选择入栈
if k<=length(z) then
begin
s:=s+z[k];
inc(top);
try(k+1);
dec(top);
delete(s,length(s),1);
end;
选择出栈
if top>=1 then
begin
c:=c+s[top];
dec(top);
try(k);
inc(top);
end;
end;

begin
z:="abcde";//按顺序入栈的字母
top:=0;
end;

如果是想要出栈的方法总数,那么就要数学推倒.

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧