P2413 求助
  • 板块学术版
  • 楼主AFO1
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/8/5 07:54
  • 上次更新2023/11/4 11:58:08
查看原帖
P2413 求助
250940
AFO1楼主2021/8/5 07:54

rt,思路见 https://luogu.com.cn/blog/250940/solution-p2413

代码如下:

#include<bits/stdc++.h>
using namespace std;
string s;
int lq,rq,ck,n;
double a[30];
struct node
{
	int le,ri;
	double val; 
}kuai[100005];
double chuli(int r1,int r2)//r1到r2号块的最终值 
{
	double ans=kuai[r1].val;
	for(int i=r1+1;i<=r2;i++)
	{
		if(s[kuai[i].ri+1]=='(') ans*=kuai[i].val;//并联
		else ans=ans+kuai[i].val-ans*kuai[i].val;//串联 
	}
	return ans;
}
double dfs(int l,int r)
{
	bool flg=0;
	int pre=l;
	int prvck=ck;
	double ans;
	if(l==r) return a[s[l]-'A'];
	else for(int j=l;j<=r;j++)
	{
		if(s[j]=='(') lq++,flg=1;
		else if(s[j]==')') rq++,flg=1;
		if(lq==rq&&flg)
		{
			kuai[++ck].le=pre;
			kuai[ck].ri=j;
			kuai[ck].val=dfs(pre,j);
			pre=j+1;
		}
	}
	ans=chuli(prvck+1,ck);
	ck=prvck;//相当于回溯吧
	return ans;
}
int main()
{
	cin>>n>>s;
	for(int i=1;i<=n;i++) cin>>a[i];
	cout<<dfs(0,s.size()-1);
	return 0;
}

请问哪里出错了,输入后是死机

2021/8/5 07:54
加载中...