刚开始参加竞赛没有做过有那么多特殊情况的题,而且好多需要自己考虑到的条件 做了好几个小时开始的时候一直卡在50%,后来看了各位大佬的题解慢慢改到AC,头绪还是有点乱,写一下理个思路。 前面写的挺顺但是没考虑到在直接使用a[i-1]++这些的时候会导致m的循环条件改变导致错误,引入t解决。然后就是开头和末尾是-的情况加入了1,5解决,还有前面是字母后面是数字的的情况,因为写的时候题干上有-后面的<=前面的情况没有意识到有这个特殊情况后来看题解才知道。然后就是连续两个-的情况,加第三个解决。开始第一个只写了if(a[0]=='-')在开头是--的情况下多打印了一个-然后给if加了a[1]!=-的情况让其只在开头有一个-时打印- #include<bits/stdc++.h> using namespace std; int main(){ int p1,p2,p3,t,flag=0; cin>>p1>>p2>>p3; char a[110]; scanf("%s",a); int count=strlen(a); if(a[0]=='-'&&a[1]!='-'){//1 printf("-"); //这个和下面第四个if判重了 } for(int i=0;i<count;i++){ if(a[i]!='-') printf("%c",a[i]); if(a[i]=='-'&&a[i+1]<=a[i-1])//前面是字母后面是数字的的情况//2 {printf("%c",a[i]); continue;} if(a[i]=='-'&&(((a[i-1]>='a'&&a[i-1]<='z')&&(a[i+1]>='a'&&a[i+1]<='z'))||((a[i-1]>=48&&a[i-1]<=57)&&(a[i+1]>=48&&a[i+1]<=57)))&&(a[i+1]==a[i-1]+1)){//3 continue; } if(a[i]=='-'&&(a[i-1]=='-'||a[i+1]=='-')){//4 printf("%c",a[i]); continue; } if(a[i]=='-'&&a[i-1]>=48&&a[i-1]<=57&&a[i+1]>='a'&&a[i+1]<='z'){//5 printf("%c",a[i]);continue; } if(a[i]=='-'&&(((a[i-1]>='a'&&a[i-1]<='z')&&(a[i+1]>='a'&&a[i+1]<='z'))||((a[i-1]>=48&&a[i-1]<=57)&&(a[i+1]>=48&&a[i+1]<=57)))&&a[i+1]>a[i-1]){ if((a[i-1]>='a'&&a[i-1]<='z')&&p1==1&&p3==1){ t=a[i-1]; for(int m=a[i-1]+1;m<a[i+1];m++){ t++; for(int j=0;j<p2;j++) { printf("%c",t);} } } if((a[i-1]>='a'&&a[i-1]<='z')&&p1==1&&p3==2){ t=a[i+1]; for(int m=a[i-1]+1;m<a[i+1];m++){ t--; for(int j=0;j<p2;j++) {printf("%c",t);} } } if((a[i-1]>='a'&&a[i-1]<='z')&&p1==2&&p3==1){ t=a[i-1]; for(int m=a[i-1]+1;m<a[i+1];m++){ t++; for(int j=0;j<p2;j++) {printf("%c",t-32);} } } if((a[i-1]>='a'&&a[i-1]<='z')&&p1==2&&p3==2){ t=a[i+1]; for(int m=a[i-1]+1;m<a[i+1];m++){ t--; for(int j=0;j<p2;j++) {printf("%c",t-32);} } } if(p1==3&&(p3==1||p3==2)){ for(int m=a[i-1]+1;m<a[i+1];m++){ for(int j=0;j<p2;j++) {printf("*");} } } if(p1!=3&&(a[i-1]>=48&&a[i-1]<=57)&&p3==1){ t=a[i-1]; for(int m=a[i-1]+1;m<a[i+1];m++){ ++t; for(int j=0;j<p2;j++) {printf("%c",t);} } } if(p1!=3&&(a[i-1]>=48&&a[i-1]<=57)&&p3==2){ t=a[i+1]; for(int m=a[i-1]+1;m<a[i+1];m++){ --t; for(int j=0;j<p2;j++) {printf("%c",t);} } } } } }