用双向链表拿部分分,结果宝玲了
查看原帖
用双向链表拿部分分,结果宝玲了
748437
AirQwQ楼主2022/10/29 21:16

rt,想做没有括号的,考试突发奇想用了个学都没学的链表,求调

void d_2(){
    s1[s.size()-1]=s.size()-1;
    s2[0]=0;
    for(int i=0;i<s.size()-1;i++) s1[i]=i+1;
    for(int i=1;i<s.size();i++) s2[i]=i-1;
    for(int i=1;i<s.size()-1;i++){
        if(s[i]=='&'){
            a[i-1]=a[i+1]=1;
            s1[i]=s1[s1[i]];
            s2[i]=s2[s2[i]];
            s1[s2[s2[i]]]=i;
            s2[s1[s1[i]]]=i;
            if(s[s2[i]]=='0') s[i]='0',ans_1++;
            else if(s[s1[i]]=='0') s[i]='0';
            else s[i]='1';
            //cout<<s<<endl;
        }
    }
    for(int i=1;i<s.size()-1;i++){
        if(s[i]=='|'){
            a[i-1]=a[i+1]=1;
            s1[i]=s1[s1[i]];
            s2[i]=s2[s2[i]];
            s1[s2[s2[i]]]=i;
            s2[s1[s1[i]]]=i;
            if(s[s2[i]]=='1') s[i]='1',ans_2++;
            else if(s[s1[i]]=='1') s[i]='1';
            else s[i]='0';
            //cout<<s<<endl;
        }
    }
    for(int i=0;i<s.size();i++){
        if(a[i]==0){
            cout<<s[i]<<endl;
            cout<<ans_1<<' '<<ans_2;
            return ;
        }
    }
    //cout<<s;
    return ;

}
2022/10/29 21:16
加载中...