感觉好多坑
查看原帖
感觉好多坑
1378471
atmlantian楼主2025/7/25 14:17

我的第一个代码

#include<iostream>
using std::string;using std::cin;using std::cout;
char a[10001][101],n;
int f[1000001];
int main(){
	for(;;){
		char a;
		scanf("%c",&a);
		if(a=='E') break;
		if(a=='W') f[++n]=1;
		if(a=='L') f[++n]=2;
	}
	int i=1;
	while(1){
		int A=0,B=0;
		if(f[i]==0) break;
		while(1){
			if(A==11 || B==11) break;
			if(f[i]==0) break;
			if(f[i]==1) A++;
			if(f[i++]==2) B++;
		}
		printf("%d:%d\n",A,B);
	}
	printf("\n");
	i=1;
	while(1){
		int A=0,B=0;
		if(f[i]==0) break;
		while(1){
			if(A==21 || B==21) break;
			if(f[i]==0) break;
			if(f[i]==1) A++;
			if(f[i++]==2) B++;
		}
		printf("%d:%d\n",A,B);
	}
}

赤橙黄绿青蓝紫
发现把

if(A==11 || B==21) break;

要放后面

#include<iostream>
using std::string;using std::cin;using std::cout;
char a[10001][101],n;
int f[1000001];
int main(){
	for(;;){
		char a;
		scanf("%c",&a);
		if(a=='E') break;
		if(a=='W') f[++n]=1;
		if(a=='L') f[++n]=2;
	}
	int i=1;
	while(1){
		int A=0,B=0;
		while(1){
			if(A==11 || B==11) break;
			if(f[i]==0) break;
			if(f[i]==1) A++;
			if(f[i++]==2) B++;
		}
		printf("%d:%d\n",A,B);
		if(f[i]==0) break;
	}
	printf("\n");
	i=1;
	while(1){
		int A=0,B=0;
		while(1){
			if(A==21 || B==21) break;
			if(f[i]==0) break;
			if(f[i]==1) A++;
			if(f[i++]==2) B++;
		}
		printf("%d:%d\n",A,B);
		if(f[i]==0) break;
	}
}

RE
发现a数组好幽默,删了
WA
又发现A和B至少相差一才结束

#include<iostream>
using std::string;using std::cin;using std::cout;
int abs(int a){
	if(a<0) return a*-1;
	return a;
}
int n;
int f[1000001];
int main(){
	for(;;){
		char a;
		scanf("%c",&a);
		if(a=='E') break;
		if(a=='W') f[++n]=1;
		if(a=='L') f[++n]=2;
	}
	int i=1;
	while(1){
		int A=0,B=0;
		while(1){
			if((A==11 || B==11) && (abs(A-B)>1)) break;
			if(f[i]==0) break;
			if(f[i]==1) A++;
			if(f[i++]==2) B++;
		}
		printf("%d:%d\n",A,B);
		if(f[i]==0) break;
	}
	printf("\n");
	i=1;
	while(1){
		int A=0,B=0;
		while(1){
			if((A==21 || B==21) && (abs(A-B)>1)) break;
			if(f[i]==0) break;
			if(f[i]==1) A++;
			if(f[i++]==2) B++;
		}
		printf("%d:%d\n",A,B);
		if(f[i]==0) break;
	}
}

还是WA
又发现AABB条件要改为>=>=

#include<iostream>
using std::string;using std::cin;using std::cout;
int abs(int a){
	if(a<0) return a*-1;
	return a;
}
int n;
int f[1000001];
int main(){
	char a;
	for(;cin>>a;){
		if(a=='E') break;
		if(a=='W') f[++n]=1;
		if(a=='L') f[++n]=2;
	}
	int i=1;
	while(1){
		int A=0,B=0;
		while(1){
			if((A>=11 || B>=11) && (abs(A-B)>1)) break;
			if(f[i]==0) break;
			if(f[i]==1) A++;
			if(f[i++]==2) B++;
		}
		printf("%d:%d\n",A,B);
		if(f[i]==0) break;
	}
	printf("\n");
	i=1;
	while(1){
		int A=0,B=0;
		while(1){
			if((A>=21 || B>=21) && (abs(A-B)>1)) break;
			if(f[i]==0) break;
			if(f[i]==1) A++;
			if(f[i++]==2) B++;
		}
		printf("%d:%d\n",A,B);
		if(f[i]==0) break;
	}
}

90分

最后还是AC了

2025/7/25 14:17
加载中...