最后程序编译出现RUNTIME ERROR【网站提示】Runtime Error 不通过:程序运行时错误(如数组越界、被零除、运算溢出、栈溢出、无效指针等)
【问题】想必有人做过vijos这道题吧?不太清楚本人程序哪里出现了这样的问题?另本人还是小白,代码暴力破解...欢迎愿意的大神提供给更优方案哈~
【以下为题目描述】
华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。
比赛规则和实际比赛规则相同, 在11分制下比分为10:11时还要继续比赛,直到分数差距达到2分;同理21分制下比分为20:21的时候也还要继续比赛。
比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在11分制下,此时比赛的结果是华华第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。而在21分制下,此时比赛结果是华华第一局21比0获胜,正在进行第二局,比分2比1。如果一局比赛刚开始,则此时比分为0比0。
你的程序就是要对于一系列比赛信息的输入(WL形式),输出正确的结果。
格式
【输入格式】
每个输入文件包含若干行字符串(每行至多20个字母),字符串有大写的W、L和E组成,也许中间有若干个空格。其中E表示比赛信息结束,程序应该忽略E之后的所有内容,E后面可能有干扰文字。
输出格式
输出由两部分组成,每部分有若干行,每一行对应一局比赛的比分(按比赛信息输入顺序)。其中第一部分是11分制下的结果,第二部分是21分制下的结果,两部分之间由一个空行分隔。
【样例输入1】
WWWWWWWWWWWWWWWWWWWW
WWLWE
【样例输出1】
11:0
11:0
1:1
21:0
2:1
限制
各个测试点1s
【以下为本人代码】
import java.util.Scanner;
public class Main {
public static void main(String[] args){
int i=0;
int j=0;
int a=0;
int b=0;
int num=0;
Scanner scanner=new Scanner(System.in);
String s1=scanner.nextLine();
String s2=scanner.nextLine();
String s=s1+s2;
s=s.replace(" ", "");
System.out.println(s);
char[] arr=s.toCharArray();
for(i=0;i<arr.length;i++){
if(arr[i]=='E'){
break;
}
num++;
}
char[] result=new char[num];
for(i=0;i<num;i++){
result[i]=arr[i];
}
for(j=0;j<num;j++){
if(result[j]=='W')
{a++;}
if(result[j]=='L')
{b++;}
if(result[j]=='\n')
{continue;}
if(a==11||b==11&&Math.abs(a-b)>2){
System.out.println(a+":"+b);
a=0;
b=0;
}
if(j==num-1){
System.out.println(a+":"+b);
a=0;
b=0;
}
}
System.out.println();
for(i=0;i<num;i++){
if(result[i]=='W')
{a++;}
if(result[i]=='L')
{b++;}
if(result[i]=='\n')
{continue;}
if(a==21||b==21&&Math.abs(a-b)>2){
System.out.println(a+":"+b);
a=0;
b=0;
}
if(i==num-1){
System.out.println(a+":"+b);
}
}
}
}
我不太会java,所以,看不了代码
不过,这个是NOIP 2003普及组的一个题目,叫乒乓球,这个题目有没得什么算法,就是你说的暴力,实际上就是模拟统计结果就可以了,至于RE,就要检查下你的数组的越界问题了
下面这个地址可以下载题目的测试数据,你把测试数据放在本地,一组一组的测试,然后对比结果,哪组有问题就DEBUG哪组
http://www.jxteacher.com/ppt/...