n个元素入栈(堆栈),问有多少种出栈方式!
请给出推导过程

解决方案 »

  1.   

    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;如果是想要出栈的方法总数,那么就要数学推倒.
      

  2.   

    我当然是请教问题了,哪有花50分考人的
    这是一道数据结构的题,我不会做,有没有正确结果
    我穷举了一下:
    n=1    1
    n=2    2
    n=5    5
    n=4    14
    不知道有没有错的,但一定要找到规律才行呀!
    ___我们要从特殊到普遍,个别到一般,具体到抽象,个性到共性嘛!!!!!!!!!!!!
      

  3.   

    例如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];
      

  4.   

    推到3都正确,推导过程优点麻烦而且夹带有猜的思想在里面,你自己用上面的DFS验证一下看看,我没有装DELPHI