WA+MLE40求调
查看原帖
WA+MLE40求调
1025171
elainya_stars楼主2025/8/4 10:27

rt.

#include<bits/stdc++.h>
using namespace std;

int n;
string s;
string ans[10005];
stack<int> k;

signed main()
{
	bool quote=0;
	string url="",img="";
	while(getline(cin,s))
	{
		n++;
		for(int i=0;i<s.size();i++)
		{
			if(s[i]=='[')
			{
				int j=i+1;
				for(;j<s.size();j++)
					if(s[j]==']')
					  break;
				bool ctn=1;
				if(s.substr(i,4)=="[h1]")
				  k.push(1),ans[n]+="# ",i=j;
				else if(s.substr(i,5)=="[/h1]")
				{
					if(k.empty() || k.top()!=1)
					  return !puts("Match Error");
					if(k.top()==1)
					  k.pop();
					ans[n]+=" #",i=j;
				}
				else if(s.substr(i,4)=="[h2]")
				  k.push(2),ans[n]+="## ",i=j;
				else if(s.substr(i,5)=="[/h2]")
				{
					if(k.empty() || k.top()!=2)
					  return !puts("Match Error");
					if(k.top()==2)
					  k.pop();
					ans[n]+=" ##",i=j;
				}
				else if(s.substr(i,3)=="[i]")
				  k.push(3),ans[n]+="*",i=j;
				else if(s.substr(i,4)=="[/i]")
				{
					if(k.empty() || k.top()!=3)
					  return !puts("Match Error");
					if(k.top()==3)
					  k.pop();
					ans[n]+="*",i=j;
				}
				else if(s.substr(i,3)=="[b]")
				  k.push(4),ans[n]+="__",i=j;
				else if(s.substr(i,4)=="[/b]")
				{
					if(k.empty() || k.top()!=4)
					  return !puts("Match Error");
					if(k.top()==4)
					  k.pop();
					ans[n]+="__",i=j;
				}
				else if(s.substr(i,5)=="[url=")
				{
					url=s.substr(i+5,j-i-5);
					k.push(5),ans[n]+="[",i=j;
				}
				else if(s.substr(i,6)=="[/url]")
				{
					if(k.empty() || k.top()!=5)
					  return !puts("Match Error");
					if(k.top()==5)
					  k.pop();
					ans[n]+="](";
					ans[n]+=url;
					url="";
					ans[n]+=")";
					i=j;
				}
				else if(s.substr(i,5)=="[img=")
				{
					img=s.substr(i+5,j-i-5);
					k.push(6),ans[n]+="![",i=j;
				}
				else if(s.substr(i,6)=="[/img]")
				{
					if(k.empty() || k.top()!=6)
					  return !puts("Match Error");
					if(k.top()==6)
					  k.pop();
					ans[n]+="](";
					ans[n]+=img;
					img="";
					ans[n]+=")";
					i=j;
				}
				else if(s.substr(i,7)=="[quote]" && !quote)
				  k.push(7),quote=1,n++,i=j,ans[n]="> "+ans[n];
				else if(s.substr(i,8)=="[/quote]")
				{
					if(k.empty() || k.top()!=7)
					  return !puts("Match Error");
					if(k.top()==7)
					  k.pop();
					quote=0,n++,i=j;
				}
				else
				  ctn=0;
				if(ctn)
				  continue;
			}
			ans[n]+=s[i];
		}
		if(quote && !(ans[n][0]=='>' && ans[n][1]==' '))
		  ans[n]="> "+ans[n];
//		if(n==20)
//		  break;
	}
	if(!k.empty())
	{
		printf("Unclo");
		return !puts("sed Mark");
	}
	for(int i=1;i<=n;i++)
	{
		if(ans[i]=="> " || ans[i]=="")
		  continue;
		cout<<ans[i]<<'\n';
	}
	return 0;
}

看不懂的地方问我qwq

测试点一直显示read ) expected /

2025/8/4 10:27
加载中...