社区讨论

map模拟求条,玄关

P2366yyy2015c01 的 IDE 之 Watches参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mi0vhwv2
此快照首次捕获于
2025/11/16 06:43
4 个月前
此快照最后确认于
2025/11/16 13:40
4 个月前
查看原帖
代码:(0分)
CPP
#include<bits/stdc++.h>
using namespace std;
long long n,f=0,c=0,f1=0;
string s,s1;
map<string,long long> m;
int main(){

    cin>>n;
    for(long long i=0;i<n;i++){
        getline(cin,s,'=');
        getline(cin,s1,';');
        for(long long j=0;j<s1.length();j++){
            if(s1[i]>='0' && s1[i]<='9'){
                f=1;
            }
            if(s1[i]=='+'){
                f1=1;
            }
        }
        if(f==1){
            for(long long j=0;j<s1.length();j++){
                c *= 10;
                c += int(s1[j]-'0');
            }
            m[s] = c;
        }
        else if(f1==1){
            f1=0;
            string a,b;
            int a1=0,b1=0,x=0,y=0;
            for(long long j=0;j<s1.length();j++){
                if(s1[j]=='+'){
                    f1=1;
                }
                else if(f1==0){
                    if(s1[j]>='0' && s1[j]<='9'){
                        a1 = 1;
                    }
                    a += s1[j];
                }
                else{
                    if(s1[j]>='0' && s1[j]<='9'){
                        b1 = 1;
                    }
                    b += s1[j];
                }
            }
            f1=0;
            if(a1==1 && b1==1){
                for(int j=0;j<s1.length();j++){
                    if(s1[j]=='+'){
                        f1=1;
                    }
                    if(f1==0){
                        x = x*10+int(s1[j]-'0');
                    }
                    else{
                        y = y*10+int(s1[j]-'0');
                    }
                }
                m[s] = x+y;
            }
            else if(a1==1 && b1==0){
                for(int j=0;j<s1.length();j++){
                    if(s1[j]=='+'){
                        f1=1;
                    }
                    if(f1==0){
                        x = x*10+int(s1[j]-'0');
                    }
                }
                m[s] = x+m[b];
            }
            else if(a1==0 && b1==1){
                for(int j=0;j<s1.length();j++){
                    if(s1[j]=='+'){
                        f1=1;
                    }
                    else{
                        y = y*10+int(s1[j]-'0');
                    }
                }
                m[s] = m[a]+y;
            }
            else{
                m[s] = m[a]+m[b];
            }
        }
        else{
            m[s] = m[s1];
        }
    }
    for(auto it=m.begin();it!=m.end();it++){
		cout<<it->first<<' '<<it->second<<endl;
	}
    
    return 0;
}
帮条闭关,谢谢!

回复

0 条回复,欢迎继续交流。

正在加载回复...