题目: 1001 - [NOIP2007] 字符串的展开
#include<bits/stdc++.h>
using namespace std;
string ans;
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int p1,p2,p3;
cin>>p1>>p2>>p3;
string s;
cin>>s;
for(int i = 0;i < s.size();i++)
{
if(s[i]!='-') ans+= s[i];
else
{
char x = s[i-1],y=s[i+1];
if(p3==1)
{
if(y>x)
{
if(y==x+1) continue;
else
{
int t = y - x -1;
if( p1==1)
{
for(char i = x+1;i < y ;i++ )
{
for(int j = 1;j <= p2;j++ )
{
ans+=i;
}
}
}
if(p1==2 && x>='a' &&x<='z')
{
for(char i = x+1;i < y;i++)
{
for(int j = 1;j <= p2;j ++ )
{
ans += i;
}
}
}
if(p1==2 && x>='0' && x<='9')
{
for(char i = x+1;i < y;i++ )
{
for(int j = 1;j <= p2;j ++ )
{
ans += i;
}
}
}
if(p1==3)
{
for(int i = 1;i <= p2*t; i++ )
ans += '*';
}
}
}
else ans+=s[i];
}
else
{
if(y>x)
{
if(y==x+1) continue;
else
{
int t = y - x -1;
if( p1==1)
{
for(char i = x+1;i < y ;i++ )
{
for(int j = 1;j <= p2;j++ )
{
ans+=i;
}
}
}
if(p1==2 && x>='a' &&x<='z')
{
for(char i = y-33;i >= x-31;i--)
{
for(int j = 1;j <= p2;j ++ )
{
ans += i;
}
}
}
if(p1==2 && x>='0' && x<='9')
{
for(char i = y-1;i > x;i--)
{
for(int j = 1;j <= p2;j ++ )
{
ans += i;
}
}
}
if(p1==3)
{
for(int i = 1;i <= p2*t; i++ )
ans += '*';
}
}
}
else ans += s[i];
}
}
}
cout<<ans<<endl;
return 0;
}
我改了几次,3个样例也都过了,感觉我这个代码没问题,但是牛客上只过了40%的数据,有无佬帮忙看一下问题在哪?感谢!