爆0求助,本地样例过,洛谷评测无输出
查看原帖
爆0求助,本地样例过,洛谷评测无输出
732426
zhanghy123楼主2023/11/12 18:30
#include<bits/stdc++.h>
#define num(x) (x>='0'&&x<='9' || x>='A'&&x<='Z')
using namespace std;
string s[105];//用string方便存储展开后的字符串 
int p1,p2,p3,k;
void filll(int point,char l,char r,int dx) {//展开函数 

	if(p1==2)//转大写 
		dx=32;
	else if(p1==3)
		dx=INT_MAX;//方便设为星号 
	if(num(l))
		dx=0;
	if(l==r || num(l)&&!num(r) || !num(l)&&num(r))//判断'-'两边不同类情况 与l和r相同 
	{
		s[point]="-";
		return;
	}
	if(p3==2) {
		for(char p=r-1; p>l; p--) {//倒序 
			for(int q=0; q<p2; q++)
				s[point]+=char(max(int(p-dx),int('*')));//设置成星号 
		}
	} else {
		for(char p=l+1; p<r; p++) {//正序 
			for(int q=0; q<p2; q++)
				s[point]+=char(max(int(p-dx),int('*')));
		}
	}
}
int main() {
	cin>>p1>>p2>>p3;
	char c;
	getchar();//疑似此处问题 
	while((c=getchar())!='\n')
		s[k++][0]=c;
	for(int i=1; i<k-1; i++) {
		if(s[i]=="-") {
			char l=s[i-1][0],r=s[i+1][0];
			if(r-l==1)
				continue;
			s[i]="";
			filll(i,l,r,0);
		}
	}
	for(int i=0; i<k; i++)
		if(s[i]!=" ")
			cout<<s[i];
	return 0;
}


爆零,too short on line 1

2023/11/12 18:30
加载中...