题解:P1044 [NOIP 2003 普及组] 栈
题解:P1044 [NOIP 2003 普及组] 栈
题意简述
给定数字序列
题目分析
本题属于组合数学问题,关键在于理解栈操作序列与卡塔兰数(Catalan numbers)之间的关系。对于一个长度为
卡塔兰数性质
卡塔兰数
闭合形式为:
算法选择
由于
代码实现
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
int dp[20]={0};
dp[0]=1;
for(int i=1;i<=n;i++){
for(int j=0;j<i;j++){
dp[i]+=dp[j]*dp[i-j-1];
}
}
cout<<dp[n];
return 0;
}
复杂度分析
- 时间复杂度:
O(n^2) - 空间复杂度:
O(n)