1044 栈

1044 栈

这个题早就弄过,就是用来模拟栈,貌似是在去年的时候做的,还有就是自己比较薄弱的地方就是用栈来模拟表达式,一会再训练一下
输入栈的个数,然后输出合法的出栈序列
这个题很基础,很基础很基础的,定义f[i][j]数组i表示待入栈的元素和待出栈的元素,所以列出来的递推式,就是
f[i][j]=f[i][j-1]+f[i-1][j+1]
这个式子的含义,当前的这个元素入栈的方案数加上这个元素不入栈的最大方案数
也就是两个选择,通过选择来列举方程式子’,两个选择是啥,出去或者不出去

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,f[30][30];
long long dfs(int x,int y)//一个是入栈,一个是出栈 
{
	if(f[x][y]!=0) return f[x][y];//表示已经
	if(x==0) return 1;//表示一种答案 
	if(y>0) f[x][y]+=dfs(x,y-1);
	f[x][y]+=dfs(x-1,y+1);// 
}
int main()
{
	cin>>n;
	cout<<dfs(n,0)<<endl;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值