讨论 / 动态规划可解
liuyi 2019-10-10 13: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次,注意若前一次出栈则前前次须为入栈,反之亦然,否则会重复计算序列数。

查看更多回复
提交回复