| 比赛 | 
    板子大赛 | 
    评测结果 | 
    AATAAAAAAA | 
    | 题目名称 | 
    表达式树 | 
    最终得分 | 
    90 | 
    | 用户昵称 | 
    TeaWine | 
    运行时间 | 
    2.026 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    3.27 MiB  | 
    | 提交时间 | 
    2025-01-22 16:29:59 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int p=-114514;
struct er {
    char y;
    
    int l,r;
};
er b[186];
int n,a[186],num;
int yn(char y,int a,int b){
    if(y=='+'){
        return a+b;
    }
    if(y=='-'){
        return a-b;
    }
    if(y=='*'){
        return a*b;
    }
    if(y=='/'){
        return a/b;
    }
}
int main () {
    
    freopen("expr_tree.in","r",stdin);
    freopen("expr_tree.out","w",stdout);
    
    cin>>n;
    for(int i = 1; i<=2*n; i++)a[i]=p;
    for(int i = 1; i<=n; i++){
        cin>>a[i];
    }
    
    for(int i = 1; i<n; i++){
        cin>>b[i].y>>b[i].l>>b[i].r;
    } 
    int tp=n-1,i=1;
    while(tp){
        while(b[i].y=='0')i=(i+1)%(n-1)+1;
        if(a[b[i].l]!=p&&a[b[i].r]!=p) {
            a[n+i]=yn(b[i].y,a[b[i].l],a[b[i].r]);
            tp--;
            b[i].y='0';
            if(tp==0)num=a[n+i];
        }
        i=(i+1)%(n-1)+1;
        
    }
    cout<<num;
    
    return 0;
}