Function 数学:使用一个堆栈查找置换数
我想这更像是一道数学题,不是编程 假设我有一个Function 数学:使用一个堆栈查找置换数,function,numbers,stack,discrete-mathematics,catalan,Function,Numbers,Stack,Discrete Mathematics,Catalan,我想这更像是一道数学题,不是编程 假设我有一个堆栈,我想找到数字1,2,3,…n的排列。 我可以push和pop。 e、 g.如果n=2:push,pop,push,pop1,2和push,push,pop2,1 如果n=4,我只能使用堆栈从24排列中获得14。。 是否有人知道任何函数F(n)可以产生堆栈(只有一个)可以产生的置换数?如 f(1)=1 f(2)=2 f(4)=14,我认为有一个相当简单的公式。您正在寻找Npush操作(“X”)和Npop(“Y”)操作的排列,遵循一条简单规则:
堆栈
,我想找到数字1,2,3,…n的排列
。
我可以push
和pop
。
e、 g.如果n=2:push,pop,push,pop
1,2和push,push,pop
2,1
如果n=4,我只能使用堆栈从24
排列中获得14
。。
是否有人知道任何函数F(n)
可以产生堆栈(只有一个)可以产生的置换数?如
f(1)=1
f(2)=2
f(4)=14,我认为有一个相当简单的公式。您正在寻找N
push操作(“X”)和N
pop(“Y”)操作的排列,遵循一条简单规则:
- 空堆栈上没有弹出窗口(f.e.Y…和XXYYY…无效)
也许一些递归定义有助于:
function F(n_push, n_pop) {
int total_count = 0;
if (n_push > 0) total_count += F(n_push - 1, n_pop);
if (n_pop > n_push) total_count += F(n_push, n_pop - 1);
return total_count;
}
这样的函数是加泰罗尼亚数。有关公式,请参阅。是的,这是正确答案。我不知道这些,但看看“组合数学中的应用”部分,这正是我们想要的。非常感谢!!很不错的。不过我在寻找更接近数学术语的东西。我真的很感激你的帮助。