検索

ホームページ  >  に質問  >  本文

在VIJOS上用Java实现算法出现的问题

【问题】想必有人做过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中文网2804日前505

全員に返信(1)返信します

  • PHP中文网

    PHP中文网2017-04-18 10:58:13

    私はJavaがあまり得意ではないので、コードを読むことができません
    しかし、これは卓球というNOIP 2003の普及グループのトピックです、このトピックには、あなたが言及した暴力について何かありますか?実際、これはシミュレーションされた統計結果です。RE に関しては、次のアドレスから問題のテスト データをダウンロードできます。データをローカルでテストし、グループを次々とテストし、結果を比較してどのグループがデバッグしているかを確認します。問題は、どのグループが DEBUG であるかです
    http://www.jxTeacher.com/ppt/...

    返事
    0
  • キャンセル返事