60分求助
查看原帖
60分求助
527772
Login_楼主2021/8/29 15:51
#include<bits/stdc++.h>

using namespace std;

int p1,p2,p3;
int len;
string str;
char str1[250];

int change_str(int t)
{
	int count=1;
	len=str[t+1]-str[t-1]-1;
	if(t==0) str.replace(t,1,"@");//第一个字符就是- 
	else if(str[t+1]=='-') str.replace(t,2,"@@");//两个连续--
	else if(str[t-1]>=str[t+1]) str.replace(t,1,"@");//-的后面比前面大
	else if(str[t-1]<='9'&&str[t+1]>'9'||str[t+1]<='9'&&str[t-1]>'9'||str[t-1]>='a'&&str[t+1]<'a'||str[t+1]>='a'&&str[t-1]<'a') str.replace(t,1,"@");//-的左右不匹配
	else if(str[t+1]-str[t-1]==1) str.replace(t,1,"");//-前后正好相连
	else if(str[t-1]<str[t+1])//-左右匹配且后面比前面大
	{
		if(p1==1)
		{
			if(p3==1)
			{
				for(int i=0;i<len*p2;i+=p2)
				{
					int p=p2;
					while(p--)
						str1[i+p]=(char)((int)(str[t-1]+count));
					count++;
				}
				str.replace(t,1,str1);
				memset(str1,'\0',sizeof(str1));
			}
			else
			{
				for(int i=0;i<len*p2;i+=p2)
				{
					int p=p2;
					while(p--)
						str1[i+p]=(char)((int)(str[t+1]-count));
					count++;
				}
				str.replace(t,1,str1);
				memset(str1,'\0',sizeof(str1));
			}
		}
		else if(p1==2)
		{	
			if(p3==1)
			{
				if(str[t-1]<='9')
				{
					for(int i=0;i<len*p2;i+=p2)
					{
						int p=p2;
						while(p--)
							str1[i+p]=(char)((int)(str[t-1]+count));
						count++;
					}
					str.replace(t,1,str1);
					memset(str1,'\0',sizeof(str1));
				}
				else
				{
					for(int i=0;i<len*p2;i+=p2)
					{
						int p=p2;
						while(p--)
							str1[i+p]=(char)((int)(str[t-1]+count-32));
						count++;
					}
					str.replace(t,1,str1);
					memset(str1,'\0',sizeof(str1));
				}
			}
			else
			{
				if(str[t-1]<='9')
				{
					for(int i=0;i<len*p2;i+=p2)
					{
						int p=p2;
						while(p--)
							str1[i+p]=(char)((int)(str[t+1]-count));
						count++;
					}
					str.replace(t,1,str1);
					memset(str1,'\0',sizeof(str1));
				}
				else
				{
					for(int i=0;i<len*p2;i+=p2)
					{
						int p=p2;
						while(p--)
							str1[i+p]=(char)((int)(str[t+1]-count-32));
						count++;
					}
					str.replace(t,1,str1);
					memset(str1,'\0',sizeof(str1));
				}
			}
		}
		else
		{
			for(int i=0;i<len*p2;i+=p2)
				str1[i]='*';
			str.replace(t,1,str1);
			memset(str1,'\0',sizeof(str1));
		}
	}
}

int main()
{
	cin>>p1>>p2>>p3;
	cin>>str;
	while(str.find("-")!=string::npos)
		change_str(str.find("-"));
	for(int i=0;i<str.length();i++)
	{
		if(str[i]=='@') cout<<'-';
		else cout<<str[i];
	}
	return 0;
}
2021/8/29 15:51
加载中...