最後程序編譯出現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中文网2017-04-18 10:58:13
我不太會java,所以,看不了代碼
不過,這個是NOIP 2003普及組的一個題目,叫乒乓球,這個題目有沒得什麼演算法,就是你說的暴力,其實就是模擬統計結果就可以了,至於RE,就要檢查下你的數組的越界問題了
下面這個地址可以下載題目的測試數據,你把測試數據放在本地,一組一組的測試,然後對比結果,哪組有問題就DEBUG哪一組
http://www.jxteacher.com/ppt/...