90 WA 求助
查看原帖
90 WA 求助
242931
zjqzjq楼主2023/3/31 12:48
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
int n;
map<string,string> mp;
map<string,int> tmp;
bool check(char c){
    return c>='a' && c<='z' || c>='A' && c<='Z' || c>='0' && c<='9' || c=='_';
}
void write(string s){
    if(s=="") return;
    string ss="";
    int sl=s.size();
    for(int i=0;i<sl;i++){
        if(check(s[i])){
            ss+=s[i];
            continue;
        }
        if(mp.find(ss)!=mp.end() && tmp[ss]==0){
            tmp[ss]=1;
            write(mp[ss]);
            tmp[ss]=0;
            putchar(s[i]);
        }
        else{
            cout<<ss<<s[i];
        }
        ss="";
    }
    if(ss.size()){
        if(mp.find(ss)!=mp.end() && tmp[ss]==0){
            tmp[ss]=1;
            write(mp[ss]);
            tmp[ss]=0;
        }
        else{
            cout<<ss;
        }
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        string s; cin>>s;
        if(s=="#define"){
            string ss,tt; cin>>ss;
            char c=getchar();
            getline(cin,tt);
            mp[ss]=tt;
            puts("");
            continue;
        }
        if(s=="#undef"){
            string ss; cin>>ss;
            mp[ss]=ss;
            puts("");
            continue;
        }
        tmp.clear(),write(s);
        char c=getchar();
        if(c=='\n'){
            puts("");
            continue;
        }
        putchar(' ');
        while(c==' '){
            cin>>s;
            tmp.clear(),write(s);
            putchar(' ');
            c=getchar();
        }
        puts("");
    }
    return 0;
}

2023/3/31 12:48
加载中...