liuyi 2019-10-09 22:18:25
点我顶贴
收藏
删除
#include<iostream>
using namespace std;
int main()
{
int n,a[19][19][2]={};
cin>>n;
for(int i=1;i<=n;i++)a[0][i][0]=1;
for(int i=1;i<=n;i++)for(int j=i;j<=n;j++)
{
for(int k=i;k<j;k++)a[i][j][0]+=a[i][k][1];
for(int k=0;k<i;k++)a[i][j][1]+=a[k][j][0];
}
cout<<a[n][n][1];
}
假设总共入了x次出了y次,前一次操作可能为入栈数不大于(x-y)次或者出栈数不大于y次,注意若前一次出栈则前前次须为入栈,反之亦然,否则会重复计算序列数。