月赛C两份代码
#include<bits/stdc++.h>
using namespace std;
struct ZS{
int x,y;
}b[5005];
int n,len;
char a[5005];
inline int read(){
int ret=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
while(isdigit(ch)){ret=ret*10+ch-'0';ch=getchar();}
return ret*f;
}
int main(){
freopen("T208080.in","r",stdin);
freopen("T208080.out","w",stdout);
n=read();
scanf("%s",a+1);
a[n+1]=a[n];
for(int i=1;i<=n;i++)
if(a[i]==a[i-1]){
for(int j=i;j<=n;j++)if(a[j]==a[j+1]){
b[++len]=(ZS){i,j};
i=j+1;
break;
}
}
printf("%d\n",len);
for(int i=1;i<=len;i++)printf("%d %d CAB\n",b[i].x,b[i].y);
return 0;
}
和
#include<bits/stdc++.h>
using namespace std;
struct ZS{
int x,y;
}b[5005];
int n,len;
char a[5005];
inline int read(){
int ret=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
while(isdigit(ch)){ret=ret*10+ch-'0';ch=getchar();}
return ret*f;
}
int main(){
freopen("T208080.in","r",stdin);
freopen("T208080.out","w",stdout);
n=read();
scanf("%s",a+1);
a[n+1]=a[n];
for(int i=1;i<=n;i++)
if(a[i]==a[i-1]){
for(int j=i;j<=n;j++)if(a[j]==a[j+1]){
b[++len]=(ZS){i,j};
i=j+1;
break;
}
}
printf("%d\n",len);
for(int i=1;i<=len;i++)printf("%d %d CAB\n",b[i].x,b[i].y);
return 0;
}
区别就在于第一个是直接读入字符串,第二个是对于第二行的每一个字符单独读入,结果一个满分还一个错光,比赛的时候调了一个多小时才出来,还是结合CSP-S的经历才想到可能是数据格式的问题,虽然说linux系统下数据格式会发生变化,但到底是哪里发生了变化呢qwq?