关于#4#5#7的数据分享和#9的求助(90pt代码)
查看原帖
关于#4#5#7的数据分享和#9的求助(90pt代码)
580339
Cheney__22楼主2022/5/1 18:27

哪个大佬有#9的数据啊能不能分享一下?(或者帮我看看代码也行感谢神犇)

我这里有#4#5#7的数据

———————分割线————————

限于洛谷帖子的问题,可能1,2行之间的回车不太对,各位dalao需要自己调一下

#4 输入:

2 2 2

9-a-a

#4输出:

9-a-a

#5输入:

1 5 1

-254-243-52-345-243-5234-52-345-234-52-345-234-52345-4325-2345-2345-2345

#5输出:

-254-2434444452345-24344444523452345-23452345-23452345-4325-2345-2345-2345

#7输入:

2 8 2

--09-8-w-er-7h-08w-e7-hc-r890-q7w-eh-rc98-07-q8-ewr-8h-c-8-294-5-dsf--k-h-2-48-3k-h-sd-fq-a-

#7输出:

--09-8-w-er-7h-08w-e7-

hcQQQQQQQQPPPPPPPPOOOOOOOONNNNNNNNMMMMMMMMLLLLLLLLKKKKKKKKJJJJJJJJIIIIIIIIHHHHHHHHGGGGGGGGFFFFFFFFEEEEEEEEDDDDDDDDr890-q7w-ehQQQQQQQQPPPPPPPPOOOOOOOONNNNNNNNMMMMMMMMLLLLLLLLKKKKKKKKJJJJJJJJIIIIIIIIrc98-07-q8-ewr-8h-c-8-2945-dsf--k-h-23333333348-3k-hRRRRRRRRQQQQQQQQPPPPPPPPOOOOOOOONNNNNNNNMMMMMMMMLLLLLLLLKKKKKKKKJJJJJJJJIIIIIIIIsdEEEEEEEEfq-a-

———————分割线————————

下面是我自己的代码(求求了帮我看看)

#include <bits/stdc++.h>
using namespace std;
int p1,p2,p3;//分别表示三种操作
//p1 = 1:填充小写字母(连续);=2:填充大写字母(连续);=3填充*(个数等于前两个)
//p2:填充时的重复次数
//p3:=1:原序 =2:逆序
/*特殊情况:如d-e时,只删除-(包括数字如3-4),如果右边的ASCLL码小于或等于
左边,则保留-并保持原样输出*/ 
string origin_str;//表示源字符串
string ans ;
int head_org,tail_org;
char head , tail;
void Fill()//p1
{
	
	if(p3==1) 
	{		
		if (( (head_org>=48&&head_org<=57) && (tail_org>=48&&tail_org<=57) ))
		{
			for (int i=head_org+1;i<tail_org;i++)
			{
				for (int j=1;j<=p2;j++)
					ans = ans + char(i);
			}
		}	
		else if (p1==1)//小写字母 
		{
			for (int i=head_org+1;i<tail_org;i++)
			{
				for (int j=1;j<=p2;j++)
					ans = ans + char(i);
			}
		}
		else if (p1==2)//大写字母 
		{
			for (int i=head_org+1-32;i<tail_org-32;i++)
			{
				for (int j=1;j<=p2;j++)
					ans = ans + char(i);
			}
		}
		else if (p1==3)//**
		{
			for (int i=head_org+1;i<tail_org;i++)
			{
				for (int j=1;j<=p2;j++)
					ans = ans + "*";
			}
		}
	}
	else if (p3==2)
	{
		if (( (head_org>=48&&head_org<=57) && (tail_org>=48&&tail_org<=57) ))
		{
			for (int i=head_org+1;i<tail_org;i++)
			{
				for (int j=1;j<=p2;j++)
					ans = ans + char(i);
			}
		}	
		else if (p1==1)//小写字母 
		{
			for (int i=tail_org-1;i>head_org;i--)
			{
				for (int j=1;j<=p2;j++)
					ans = ans + char(i);
			}
		}
		else if (p1==2)//大写字母 
		{
			for (int i=tail_org-1-32;i>head_org-32;i--)
			{
				for (int j=1;j<=p2;j++)
					ans = ans + char(i);
			}
		}
		else if (p1==3)//** 
		{
			for (int i=head_org+1;i<tail_org;i++)
			{
				for (int j=1;j<=p2;j++)
					ans = ans + "*";
			}
		}
	}
}
int main ()
{
	cin>>p1>>p2>>p3;
	cin>>origin_str;
	for (int i=0;i<origin_str.size();i++)
	{
		if (origin_str[i]=='-'&&
		( (origin_str[i+1]>=65&&origin_str[i+1]<=122) || (origin_str[i+1]>=48&&origin_str[i+1]<=57) )&& 
		( (origin_str[i-1]>=65&&origin_str[i-1]<=122) || (origin_str[i-1]>=48&&origin_str[i-1]<=57) ))//如果找到的时候,开始Fill
		{
			head =  origin_str[i-1];
			tail =  origin_str[i+1];//分别读取字符串首尾的ASCLL码 
			head_org = int (head);
			tail_org = int (tail);
		//	cout<<"i = "<<i<<endl;
		//	cout<<"head = "<<head<<"  tail = "<<tail<<endl;
		//	cout<<"head_org = "<<head_org<<"  tail_org = "<<tail_org<<endl;
			if ( head_org < tail_org  )		
			{
				if ( (tail >= 65 && head >=65) || (tail <=57 && head <=57 ) )
					Fill();
				else 
					ans = ans+origin_str[i];
			}		
			else if ( head_org >= tail_org  )
				ans = ans+origin_str[i];
						
		}
		else 
			ans = ans+origin_str[i];
		
	//	cout<<"第"<<i<<"次循环"<<endl;
	//	cout<<"结果是:  "<<ans<<endl; 
	//	cout<<endl<<endl;
	}
	cout<<ans;
	return 0;
}
2022/5/1 18:27
加载中...