求助自己哪里写挂了
查看原帖
求助自己哪里写挂了
221575
LiuyuzhuoHB幻想积木楼主2022/4/16 16:06
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
map<string,string>mp;
bool pd(char c)
{
	return c>='0'&&c<='9'||c>='a'&&c<='z'||c>='A'&&c<='Z';
}
void zk(string s)
{
	if(mp[s]=="")
	{
		cout<<s;
		return;
	}
	string t=mp[s],p=s;
	mp[s]="";
	s=t;
	int now=0;
	while(now<s.size())
	{
		string ss;
		for(;now<s.size();++now)
		{
			if(!pd(s[now]))
				break;
			ss+=s[now];
		}
		zk(ss);
		if(now==s.size())break;
		printf("%c",s[now]);
		++now;
	}
	mp[p]=t;
}
int main()
{
    //freopen("preprocessor.in","r",stdin);
	//freopen("preprocessor.out","w",stdout);
	cin>>n;
	getline(cin,s);
	for(int i=1;i<=n;++i)
	{
		getline(cin,s);
		if(s[0]=='#')
		{
			printf("\n");
			string s1,s2,s3;
			int now=1;
			for(;;++now)
			{
				if(!pd(s[now]))
					break;
				s1+=s[now];
			}
			for(++now;;++now)
			{
				if(!pd(s[now]))
					break;
				s2+=s[now];
			}
			for(++now;now<s.size();++now)
				s3+=s[now];
			if(s1=="define")
				mp[s2]=s3;
			else
				mp[s2]="";
		}
		else
		{
			int now=0;
			while(now<s.size())
			{
				string ss;
				for(;now<s.size();++now)
				{
					if(!pd(s[now]))
						break;
					ss+=s[now];
				}
				zk(ss);
				if(now<s.size())
				printf("%c",s[now]);
				++now;
			}
			printf("\n");
		}
	}
	return 0;
}
2022/4/16 16:06
加载中...