这个题的DP解法
分解出:入栈和出栈两种状态
临界点:全部入栈后出栈的结果只能是1
状态转移方程:1.入栈!=出栈
现在的入栈出栈可能性就是入栈+1,出栈 入栈,出栈-1
2.入栈==出栈
此时是栈为空
现在的入栈出栈可能性 就是入栈+1,出栈
#include <bits/stdc++.h>
using namespace std;
long long a[20][20];
int N;
int main()
{
cin>>N;
//队列里面没人
for(int i=1;i<=N;i++)
{
a[0][i]=1;//队列里面已经把人全部送到栈里面了,现在只是栈出了,没有次序
}
for(int i=1;i<=N;i++)
{
for(int j=i;j<=N;j++)
{
if(i==j)
{
//栈空了
//必须得进栈
a[i][j]=a[i-1][j];
}
else
{
//栈没空
//等同于 入栈+1 出栈 或者是 入栈 出栈+1
a[i][j]=a[i-1][j]+a[i][j-1];
}
}
}
cout<<a[N][N]<<endl;
}