解析:读完题,我想下这些情况都只能一个一个写,这道题主要问题还是超时,如果用Scanner是绝对超时的,建议能用IO流用IO流,真的快!我们用IO流读取了甲和乙的出拳,进行比较,分为甲赢和乙赢俩种大情况,再细分出的什么,创建一个数组用来存石头剪刀布的次数,题目说是相等按字母顺序输出,所以我们创建的数组就是BCJ这样的顺序。后面靠最大数量的索引来输出胜利最多的手势方便。
注意注意注意!不要用字符串equals()方法来比较!!我最开始就是用String数组来存,再用equals来比较,总是超时,后来借鉴别人的用的字符数组才通过的。
public class Pta_1018 {
static int[] j = new int[3];//"B","C","J" 212
static int[] y = new int[3];//002
static String[] res = {"B", "C", "J"};
public static void main(String[] args) throws IOException {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
int time = Integer.parseInt(buf.readLine());
//System.out.println(time+"*");
int l=0;//甲赢
int w=0;//乙赢
int balence=0;
for (int i = 0; i < time; i++) {
char []ch=buf.readLine().toCharArray();
char jia = ch[0];
char yi = ch[2];
//甲乙胜利的情况
if (jia=='C' && yi=='J' || jia=='J' && yi=='B' || jia=='B' && yi=='C') {
l++;
if (jia=='B') {
j[0]++;
}
if (jia=='C') {
j[1]++;
}
if (jia=='J') {
j[2]++;
}
}else if(jia=='J' && yi=='C' || jia=='B' && yi=='J' || jia=='C' && yi=='B'){
w++;
if (yi=='B') {
y[0]++;
}
if (yi=='C') {
y[1]++;
}
if (yi=='J') {
y[2]++;
}
}
else balence++ ;
}
System.out.println(l + " " +balence + " " + w);
System.out.println(w + " " + balence + " " +l);
int maxj = 0;
int maxy = 0;
//找胜利最多的手势
for (int i = 1; i < 3; i++) {
if (j[i] > j[maxj]) {
maxj = i;
}
}
for (int i = 1; i < 3; ++i) {
if (y[i] > y[maxy]) {
maxy = i;
}
}
System.out.println(res[maxj] + " " + res[maxy]);
buf.close();
}
}