我只能想到用栈实现, 怎么实现??
my code
#include<bits/stdc++.h>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
#define heap priority_queue
using namespace std;
typedef long long ll;
inline ll read() {
char c = getchar();
ll x = 0, y = 1;
while(c < 48 || c > 57) y = c == 45 ? -1 : 1, c = getchar();
while(c >= 48 && c <= 57) x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
return x * y;
}
const int N = 1e3 + 10;
const int INF = 0x3f3f3f3f;
int n, len, cnt;
char s[N];
double a[N];
double st[N];
int main() {
n = read();
scanf("%s", &s[1]);
len = strlen(s + 1);
for(int i = 1; i <= n; i++) scanf("%lf", &a[i]);
for(int i = 1; i <= n; i++) {
if(s[i] == '(') {
/*pass*/;
}
else if(s[i] == ',') {
st[++cnt] = -2;
}
else if(s[i] == ')') {
/*pass*/;
}
else {
if(st[cnt] == -2) {
cnt -= 2;
st[cnt] = 1 - (1 - st[cnt]) * (1 - a[s[i] + 'A' - 1]);
}
else if(st[cnt] == -1) {
/*pass*/;
}
}
}
printf("%.4lf", st[1]);
return 0;
}
/*
求串联断电的公式为1-(1-x)*(1-y)
并联为x*y
*/