设有n个元素按顺序进栈,问出栈有多少种情况(详细讲解)

您所在的位置:网站首页 c4h8brcl有多少种 设有n个元素按顺序进栈,问出栈有多少种情况(详细讲解)

设有n个元素按顺序进栈,问出栈有多少种情况(详细讲解)

2024-06-17 22:43| 来源: 网络整理| 查看: 265

为了更好的帮助理解和解题,我采用2个例子进行详细讲解。

在解题之前我们要先学一个公式。n个不同元素进栈,出栈元素不同排列的个数为: 1 n + 1 {1} \over {n+1} n+11​ C 2 n n C^n_{2n} C2nn​

这个公式叫:卡特兰数,具体的推导过程下次有空会写的。我们可以使用这个公式先算出不同排列的个数,然后再进行具体的情况分析。

栈是一个后进先出的结构。

为了解释方便,对用语进行简化。a进:a进栈。 a出:a出栈。

例题1例题2

例题1

3个元素a,b,c顺序进栈,问出栈有几种情况。

先用公式算出来一共有5种情况,然后进行具体分析。

1.先对c进行分析,假设c先出来,那么一定是a进b进c进c出b出a出的情况,出栈顺序是:cba。

2.接下来对b进行分析,假设b先出来,那么a已经进栈,接下来就有两种情况:c的进栈或者a的出栈,这样子就延伸出了2种情况,(c进c出a出 ,a出c进c出)。那么出栈顺序分别是:bca,bac。

3.最后对a进行分析,假设a先出来,那么此时b和c都没有进栈,就会有两种情况:(b进b出c进c出 ,b进c进c出b出)。那么出栈顺序分别是:abc,acb。

上面三点分析的情况加起来刚好是5种,也和公式算的是一样的。abc三个元素依次进栈,总共有cba,bca,bac,abc,acb五种情况。

例题2

4个元素a,b,c,d顺序进栈,问出栈有几种情况。

先用公式算出来一共有14种情况,然后进行具体分析。

1.先对d进行分析,假设d先出来,那么一定是a进b进c进d进d出c出b出a出的情况,出栈顺序是:dcba。

2.接下来对c进行分析,假设c先出来,那么ab已经进栈,接下来就有两种情况:d的进栈或者ab的出栈,这样子就延伸出了3种情况,(d进d出b出a出 ,b出a出d进d出 ,b出d进d出a出)。那么出栈顺序分别是:cdba,cbad,cbda。

3.然后对b进行分析,假设b先出来,那么此时a已经进栈,就会有两种情况:a的出栈和cd的进栈,这样子延出了5种情况,(a出c进c出d进d出 ,a出c进d进d出c出 ,c进c出d进a出d出 ,c进c出d进d出a出 ,c进d进d出c出a出)那么出栈顺序分别是:bacd,badc,bcad,bcda,bdca。

4.最后对a进行分析,假设a先出来,那么此时bcd都没有进栈,于是就转换为例题1了,解题步骤是一样的。出栈顺序是:adcb,acbd,acdb,abdc,abcd。

上面四点分析的情况加起来刚好是14种,也和公式算的是一样的。abcd三个元素依次进栈,总共有dcba,cdba,cbad,cbda,bacd,badc,bcad,bcda,bdca,adcb,acbd,acdb,abdc,abcd十四种情况。

觉得写得不错可以点个赞呀。😘



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3