求助,关于月赛C
  • 板块学术版
  • 楼主通行禁止
  • 当前回复16
  • 已保存回复16
  • 发布时间2021/10/30 18:42
  • 上次更新2023/11/4 01:54:13
查看原帖
求助,关于月赛C
560155
通行禁止楼主2021/10/30 18:42

月赛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?

2021/10/30 18:42
加载中...