各位帮忙看看这个思路和代码有什么问题,无法运行
查看原帖
各位帮忙看看这个思路和代码有什么问题,无法运行
733980
LxSmill楼主2022/10/23 20:45
#include<bits/stdc++.h>
using namespace std;
int n;
int main()
{
	int p1,p2,p3;
	string str;
	cin>>p1>>p2>>p3;
	cin>>str;
	int l=str.size();
	for(int i=0;i<l;i++)
	{
		if(str[i]=='-')
		{
			if(str[i+1]==str[i-1]+1) str[i]=' ';
			else if(p1==3)
		         {
		         	str[i]=' ';
		         	string astr;
		         	for(n=0;n<(str[i+1]-str[i-1])*p2;n++) astr[n]='*';
		         	str.insert(i+1,astr);
		         	l+=(str[i+1]-str[i-1])*p2;
		         } 
		         if(p1==1&&p3==1)
		         {
		         	str[i]=' ';
		         	string astr;
		         	char k=str[i-1]+1;
		         	for(n=0;n<(str[i+1]-str[i-1])*p2;n++)
		         	{
		         		astr[n]=k;
		         		if(n%p2==0) k++;
		         	}
		         	str.insert(i+1,astr);
		         	l+=(str[i+1]-str[i-1])*p2;		         	
		         }
		         if(p1==1&&p3==2)
		         {
		         	str[i]=' ';
		         	string astr;
		         	char k=str[i+1]-1;
		         	for(n=0;n<(str[i+1]-str[i-1])*p2;n++)
		         	{
		         		astr[n]=k;
		         		if(n%p2==0) k--;
		         	}
		         	str.insert(i+1,astr);
		         	l+=(str[i+1]-str[i-1])*p2;		         	
                 }
		         if(p1==2&&p3==1)
		         {
		         	str[i]=' ';
		         	string astr;		         	
					if(str[i-1]>=97&&str[i-1]<=122&&str[i+1]>=97&&str[i+1]<=122)
					{
						char k=str[i-1]-31;
						for(n=0;n<(str[i+1]-str[i-1])*p2;n++)
                        {
                        	astr[n]=k;
                        	if(n%p2==0) k++;
                        }
		         	    str.insert(i+1,astr);
		         	    l+=(str[i+1]-str[i-1])*p2;							
					}
					else
					{
		         	    char k=str[i-1]+1;
						for(n=0;n<(str[i+1]-str[i-1])*p2;n++)
		         	    {
							astr[n]=k;
		         		    if(n%p2==0) k++;
		         	    }
		         	    str.insert(i+1,astr);
		         	    l+=(str[i+1]-str[i-1])*p2;		         	    
					}
			     }
		         if(p1==2&&p3==2)
		         {
		         	str[i]=' ';
		         	string astr;		         	
					if(str[i-1]>=97&&str[i-1]<=122&&str[i+1]>=97&&str[i+1]<=122)
					{
						char k=str[i+1]-33;
						for(n=0;n<(str[i+1]-str[i-1])*p2;n++)
                        {
                        	astr[n]=k;
                        	if(n%p2==0) k--;
                        }
		         	    str.insert(i+1,astr);
		         	    l+=(str[i+1]-str[i-1])*p2;							
					}
					else
					{
		         	    char k=str[i+1]-1;
						for(n=0;n<(str[i+1]-str[i-1])*p2;n++)
		         	    {
		         		    astr[n]=k;
		         		    if(n%p2==0) k--;
		         	    }
		         	    str.insert(i+1,astr);
		         	    l+=(str[i+1]-str[i-1])*p2;		         	    
					}
		         }
		}
	}
	for(int i=0;i<l;i++) if(str[i]!=' ') cout<<str[i];
	cout<<endl;
	return 0;
} 
2022/10/23 20:45
加载中...