https://www.luogu.com.cn/record/184569758
目前是 #3,#7,#8 WA
下载数据后发现,我的程序无法处理这种输入输出:
输入
2 4 2
a-b-c
标准输出
abc
程序输出
ab-c
这是因为程序里面只处理了前面的 a-b,然后就跳到了后面那个 -,因此出现了“顾此失彼”的错误。
请问各位dalao,这种错误该怎么处理?
玄关
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int p1,p2,p3;
string extend(char l,char m,char r)
{
if(m!='-')
{
return "";
}
if(l>='0'&&l<='9'&&r>='0'&&r<='9')
{
if(l>=r)
{
string rett;
rett+=l;
rett+=m;
rett+=r;
return rett;
}
string ret;
// ret+=l;
for(char i=l+1;i<r;i++)
{
if(p1==3)
{
for(int j=1;j<=p2;j++)
{
ret+='*';
}
}
else
{
for(int j=1;j<=p2;j++)
{
ret+=i;
}
}
}
if(p3==2) reverse(ret.begin(),ret.end());
ret=l+ret+r;
return ret;
}
if(l>='a'&&l<='z'&&r>='a'&&r<='z')
{
if(l>=r)
{
string rett;
rett+=l;
rett+=m;
rett+=r;
return rett;
}
string ret;
for(char i=l+1;i<r;i++)
{
if(p1==3)
{
for(int j=1;j<=p2;j++)
{
ret+='*';
}
}
else if(p1==1)
{
for(int j=1;j<=p2;j++)
{
ret+=i;
}
}
else
{
for(int j=1;j<=p2;j++)
{
ret+=char(i-32);
}
}
}
if(p3==2) reverse(ret.begin(),ret.end());
ret=l+ret+r;
return ret;
}
return "";
}
int main()
{
// cout<<extend('-','-','0');
// return 0;
string s;
cin>>p1>>p2>>p3>>s;
for(int i=0;i<s.size();)
{
string t=extend(s[i],s[i+1],s[i+2]);
if(t!="")
{
cout<<t;
i+=3;
}
else
{
cout<<s[i];
i++;
}
}
return 0;
}