洛谷P1044栈-题解
题目:
思路:
我们考虑一下,这道题有哪几个因素能够确定一个状态?
——栈外元素数与栈内元素数
为什么?
——我们考虑一下
栈内元素个数是容易想到的
那么为什么第二维是栈外元素个数?
实际上,在这道题中如果不用它也可以,例如换成栈顶元素
但是这会导致转移极其麻烦
而在使用栈外元素的情境下就变得十分简单
怎样转移?
——两种情况:出或不出
出,栈外元素数不变,栈内元素减一
不出,栈外元素减一,栈内元素加一
加在一起就是了
代码:
#include<bits/stdc++.h> using namespace std; int n; int f[20]; int main() { scanf("%d",&n); f[0]=1; f[1]=1; for(int i=2;i<=n;i++) for(int j=0;j<i;j++) f[i]+=f[j]*f[i-j-1]; printf("%d",f[n]); return 0; }