在VIJOS上用Java实现算法出现的问题
PHP中文网
PHP中文网 2017-04-18 10:56:13
0
1
509
  • 最后程序编译出现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);
        }
            
        
        
    }
    
    }
}
PHP中文网
PHP中文网

认证0级讲师

모든 응답(1)
Ty80

저는 자바를 잘 못해서 코드를 잘 못 읽어요.
그런데 이게 탁구라는 NOIP 2003 대중화 그룹에서 나온 주제에요. 실제로는 통계 결과를 시뮬레이션하는 것입니다. RE의 경우 배열의 범위를 벗어나는 문제를 확인해야 합니다.
다음 주소에서 해당 문제의 테스트 데이터를 다운로드할 수 있습니다. .테스트 데이터를 로컬에 넣고 그룹별로 테스트한 후 결과를 비교하고 문제가 있는 그룹을 DEBUG
http://www.jxteacher.com/ppt/...

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿