第二十七天來講到第六題練習題
這題題目有點冗長,害得我當時都有點懶得看了
題目大意是:要寫一個程式自動評測系統
輸入規格是:
n組題目資料
n行
m組檢測資料
m行
然後n跟m資料比對
Accepted:資料完全一樣
Presentation Error:有一個以上的字元不一樣,"150" "15 0"這樣算屬於字元不一樣
Wrong answer:如果上面兩種都不符合,就輸出這個
輸出格式:
Run #num: 答案。
Simple input是
程式碼如下:
import java.util.*;
public class main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int cases=1;
int n1;
while((n1=sc.nextInt())!=0){
sc.nextLine();
String s1 = "";
for(int i=0;i<n1;i++){
s1+=sc.nextLine();
}
int n2=sc.nextInt();
sc.nextLine();
String s2 = "";
for(int i=0;i<n2;i++){
s2+=sc.nextLine();
}
System.out.print("Run #"+cases+": ");
cases++;
if(s1.equals(s2) && n1==n2) System.out.println("Accepted "+s1.length());
else{
if(s1.replaceAll("\\s","").equals(s2.replaceAll("\\s","")))
System.out.println("Presentation Error "+s1.length());
else System.out.println("Wrong Answer "+s1.length());
}
}
}
}
解題方式上面都講了
這邊稍微講一下答案的呈現方式
如果s1.equals(s2)和n1==n2,&&是代表and,意思是兩個條件都必須成立。
然後輸出Accepted "+s1.length(),s1.length()顯示s1的長度
如果s1.replaceAll("\s","").equals(s2.replaceAll("\s",""))
那輸出Presentation Error "+s1.length(),s1.length()一樣顯示s1的長度
如果兩者都不是就顯示Wrong Answer "+s1.length()。
然後簡單講解一下nextInt跟nextLine的差別
差別在於nextInt只讀取數字,nextLine則整串讀取。
再講解一下Simple input
第一組輸入是n1=2,讀取The answer is : 10
The answer is : 5
第二組輸入是n2=2,讀取The answer is : 10
The answer is : 5
因為兩者輸入一樣,所以輸出Run #1: Accepted 33
其他組資料可以自己稍微練習驗算一下
輸出結果如下: