求助,7个点RE,30分
查看原帖
求助,7个点RE,30分
317541
雪雨风花楼主2022/9/24 11:03

调了一上午,应该不是数组越界的问题,7个点RE,3个点AC,RE似乎是因为读入存入字符数组的长度超过了140,字符数组从140以后开始存入也会崩溃

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char score[70000],length;//length记录存入score的长度
void read(){//读入并存入score数组,只存WL
	char c;
	length=1;
	do{
		c=getchar();
		if(c=='W' || c=='L')
			score[length++]=c;
	}while(c!='E');
	return;
}
int abs(int a,int b){//输出a-b的绝对值
	return (a>b)? a-b : b-a;
}
void s(int len){ 
	int w=0,l=0;
	while(len<length){
		if(score[len]=='W')w++;
		else l++;
		len++;
		if(abs(w,l)>=2 && (w>=11 || l>=11)){
			printf("%d:%d\n",w,l);
			w=l=0;
		}
	}
	printf("%d:%d\n\n",w,l);
	return;
}
void c(int len){ 
	int w=0,l=0;
	while(len<length){
		if(score[len]=='W')w++;
		else l++;
		len++;
		if(abs(w,l)>=2 && (w>=21 || l>=21)){
			printf("%d:%d\n",w,l);
			w=l=0;
		}
	}
	printf("%d:%d\n\n",w,l);
	return;
}

int main(){
	read();
	s(1);
	c(1);
	return 0;
}

这是第二个测试点的输入数据(这个点会RE)

WWLWWWWLWWWWLWWWWWWL
WWWWWLWWWWWLWWWWWLWW
WWLWWWWWLWLWWLWLLWWL
WWLLLWWWLWLWWLWWWWWW
WWWWWWLLWLWWLWWLWWLW
WWLWLWWLWWLWWWWLWWWL
LLWWWWLLLWWWLWWWLLWW
LWWWWWLLWWWWLWLWWWWW
WWWWLLWWWWWWWLWWLWLW
WLLWWLLWLWLLWWLLWWWW
LWWLLLLWLWWWLLWWWLWL
WWWWWWWLWWLLLWWLWWLW
WLWWWLLLWWWLWWWWLLLL
WWWWWWWWWLLLWLWLWWLW
WLWWWLWWWWLWWWWWWWWL
WWLWWWWWWWLLWWLWWWLW
WLWLWWWWLWWWWLWLWWWL
WWLWLLLLWWWLWWWWWWWL
WWWWWWWWLWWWWLWLWWLL
LLWWWWLWWLWLLLWWWWLW
WLWWWWLWLWLWWWWWWLWL
WWWWLWWWWWWWLLWWLLWW
LLLWLWWWWLLLLWWLWLLL
WWLWWWWLWWWWWWWLLWWL
WWWLWWWLWWWWWWWLLLWW
WLWWWLWWWWWLWWLLWLLW
WWWWWWWWLLWLLWLWWWLW
WWLWWWLLWWWWLWWWWWLW
WWWWWWWLWWWLLWWWWWWL
WLLWLWWWLLWLWLWWWWWL
WWLLWWWWWWWWWLLWLLWW
LWLLWLWLLWWWLWLWLLWW
WWLWWWWWLLLWLWWWWWWL
WLWLWWLWLLLWLLLWWWWL
WWWWWLWLLWWLLWLWLWLW
LWLLLWWLLWLWWWWWWWWW
WWWLLWWWWLWWWWLLWLWL
WLWLWWWLWWWLLWWLWLLW
WWWWWWWWLLWWLWWLLLWW
LWWWLWWWWWWWLWLWWWWW
WWLWLLWWWLWWLLWLLLWL
WLWWWLLWWWWLLWWLWWWL
LWWWLWLWLWWWWWWLWWWW
WWWWWLLWWLWWLLLWWWWW
LWWLLWWWWWLWWLWWWLLW
WLWWWWWWWLLWLLWLWLWW
LLWWLWWWLWLLLWLLWWWW
WWLLWWLWWWWLWWLWLWWL
LLWLWLWWWWWLLWWWLLLW
LLLLWWWLLLWLWWWWLWLW
WWWWWWLLWLWLWLWWWWWL
LWLWWWLWLWLWWWWWLLWW
LWLWWWWWWLWWWWWWLWLL
LLLWWWWLWLWWLWWWWLLW
WLLWWLWLLWWWLWLLWLLW
WWWLWWLWLLWWLWLWWWWW
WWWWWWLLWWLLWWLLLLWW
WWLLLWWLLWWWWWWLWWWW
WWWWLLWWWLWWWLWWWLLW
WLLLLLWWLWLLWWWWWWWW
WWLWWWWWLWWLWWWWWWWW
WLWWWWLWLWLWLLWWWLLW
WWWWWWLWWWWLWLWWWLLW
WWWWWWWWWWWWLWWLWLWL
WWLLWWWLWWWWWLWLWWWW
WLWWLWWWLWLLWWLWWWLL
WLWWWWLWLWWWWLWWLWWW
WLWWLLWWWWWLWWWLWWWW
LWWLWWWLLWLLWWWLLLLL
LWLLLWWWWWLLWWWWWLLL
LWWLWWWLWLWLWWLWWWWL
WLWWWWWLLWLWWWWWWWWW
WWWWWLWLWWWWLLLWLWWL
WLWWLLWWLWLWWLLWLWLW
WLLWLLLWWLWWLLWLWWLW
WLWWLWWWWWWLWWWLLWWW
LLWLWWLWWWLLWLWWWWWW
WLLLWWWWLWLWWWWWWLWL
WWLWWWWLWLWWLLWLWLWW
WLWLLLWWLWLWWLLWWWWL
WWWWWWWLWWLWWWWWLWWW
WWWWWWLWLWWLWWWLWWWL
WWLLWWLLWWLWWLWWLLLW
WLWWLWWWLWLWWLWWWWWW
WWLWLLWLLWWWLWLWWWWW
WWLWLLWWWLWWLWWWWWLW
LWLWWLLWWWWWWLWWWWLL
WWWLWLLLWLLWLWWWWWWW
WWWWWWLWWWLWLWWWWLLW
WLLWLLWLLLWWWWWWWWWL
WLWWLWWLLLWLWLWWWLWL
LWWLWLWWWWWWWWLLWWWL
WWWWWWWWLWWWWLWWWWWL
WWWWLWLWWWWWWWLWLLWW
WWLWWLLWLWLLWLWLWWWW
WWLWLWLWWLWLLLLWWLWW
WLWWWWWWLWLWWWWWLWLW
WWLWLWWWWLLWLWWWLWWL
WWWWLWWLWLLWLWWWLWWW
LWWLWWLWLWWLWLWWWWWW
E

(正确的)输出数据

11:3
11:2
11:2
11:4
11:9
11:0
11:7
11:4
11:9
11:4
11:3
11:5
11:8
11:9
11:6
11:5
11:8
11:4
11:3
11:3
11:4
11:9
11:1
11:7
11:6
11:4
11:3
11:8
12:10
11:4
11:4
11:3
11:6
11:7
11:2
11:3
11:8
11:3
12:10
11:5
11:7
11:8
9:11
11:4
11:3
11:7
11:5
11:8
11:2
11:9
11:7
11:5
11:1
11:7
11:6
11:6
12:10
11:4
11:9
7:11
11:2
11:8
11:5
11:3
11:9
11:7
11:9
11:2
9:11
11:3
11:3
8:11
11:1
11:2
11:4
11:5
11:4
11:1
11:6
11:4
11:7
11:4
11:4
11:7
8:11
11:6
11:5
11:3
11:2
16:18
11:7
11:4
11:7
11:5
11:3
14:12
11:3
11:3
11:3
11:7
11:8
11:4
11:4
11:5
11:6
11:9
11:0
11:7
11:6
12:10
11:4
11:2
11:2
11:5
11:8
11:9
11:3
11:4
11:5
11:7
11:5
2:0

21:4
21:6
21:10
21:10
21:11
21:6
21:18
21:11
21:13
21:6
21:7
21:10
21:12
21:8
21:17
21:6
21:10
21:9
21:5
21:11
21:15
21:15
21:15
21:10
21:12
21:6
21:16
21:9
21:8
21:15
21:13
21:17
21:11
21:10
21:17
21:12
21:7
21:11
21:8
21:7
21:7
21:11
21:8
21:16
21:13
21:5
22:20
21:12
21:9
21:14
21:7
21:7
21:12
21:11
21:9
21:8
21:13
21:13
21:4
21:13
21:10
21:10
21:11
7:2

把length改写成指针就AC了,不知道为什么,求指教

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char score[70000],*length;
void read(){
	char c;
	length=score+1;
	do{
		c=getchar();
		if(c=='W' || c=='L'){
			*length=c;
			length++;
		}
	}while(c!='E');
	return;
}
int abs(int a,int b){
	return (a>b)? a-b : b-a;
}
void s(int len){//11分制 
	int w=0,l=0;
	while(len<length-score){
		if(score[len]=='W')w++;
		else l++;
		len++;
		if(abs(w,l)>=2 && (w>=11 || l>=11)){
			printf("%d:%d\n",w,l);
			w=l=0;
		}
	}
	printf("%d:%d\n\n",w,l);
	return;
}
void c(int len){//21分制 
	int w=0,l=0;
	while(len<length-score){
		if(score[len]=='W')w++;
		else l++;
		len++;
		if(abs(w,l)>=2 && (w>=21 || l>=21)){
			printf("%d:%d\n",w,l);
			w=l=0;
		}
	}
	printf("%d:%d\n\n",w,l);
	return;
}

int main(){
	read();
	s(1);
	c(1);
	return 0;
}
2022/9/24 11:03
加载中...