题目大意
有 元素位于 栈中,要将这些元素通过 栈,转移到 栈
求转移到 栈后有多少种不同的排列顺序,答案对 取
题目解析
由于存储过程只有两种操作:
将一个元素加入中转栈中
将中转栈的一个元素加入目标栈
设 为 栈中有 个元素, 栈中有 个元素的方法数( 栈中有 个元素)
初始状态 ,目标状态
代码
#include<bits/stdc++.h>
using namespace std;
int n,p;
int f[2005][2005];
int main()
{
scanf("%d%d",&n,&p);
f[n][0]=1;
for(int i=n-1;i>=0;i--)
for(int j=min(n-i,p);j>=0;j--)
f[i][j]=(f[i+1][j-1]+f[i][j+1])%4096;
printf("%d",f[0][0]);
}