牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)
锤子剪刀布 (20)
题目描述
大家应该都会玩“锤子剪刀布”的游戏:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入描述:
输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。
输出描述:
输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。
输入例子:
10C JJ BC BB BB CC CC BJ BB CJ J
输出例子:
5 3 22 3 5B B 思路分析:1.将输入的交锋信息遍历一遍,求出双方赢、平和负的次数,以及每个手势赢的次数;2.根据这些次数判断双方获胜次数最多的手势并输出。 Java 代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int n = sca.nextInt();
String[][] arr = new String[n][2];
int[] left = new int[3];
int[] right = new int[3];
int win = 0;
int p = 0;
int mistake = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < 2; j++) {
arr[i][j] = sca.next();
}
}
//统计双方赢、平、输的次数
for (int i = 0; i < arr.length; i++) {
if(arr[i][0].equals("C")&&arr[i][1].equals("J") || arr[i][0].equals("J")&&arr[i][1].equals("B") || arr[i][0].equals("B")&&arr[i][1].equals("C")){
left = f(left,arr[i][0]);
win++;
}else if(arr[i][0].equals("C")&&arr[i][1].equals("C") || arr[i][0].equals("J")&&arr[i][1].equals("J") || arr[i][0].equals("B")&&arr[i][1].equals("B")){
p++;
}else{
right = f(right,arr[i][1]);
mistake++;
}
}
System.out.println(win+" "+p+" "+mistake);
System.out.println(mistake+" "+p+" "+win);
str(left);
System.out.print(" ");
str(right);
}
//判断赢的手势并计数
static int[] f(int[] arr,String str){
if(str.equals("C"))
arr[0]++;
else if(str.equals("J"))
arr[1]++;
else if(str.equals("B"))
arr[2]++;
return arr;
}
//输出双方赢得最多的手势
static void str(int[] arr){
int max=0;
String maxstr = "";
String[] mm = new String[] {"C","J","B"};
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i]<arr[j]){
max = arr[j];
arr[j] = arr[i];
arr[i] = max;
maxstr = mm[j];
mm[j] = mm[i];
mm[i] = maxstr;
}
}
}
if(arr[0]==arr[1]){
if(arr[1]==arr[2]){
System.out.print("B");
}else{
if(mm[0].compareTo(mm[1])>0){
System.out.print(mm[1]);
}else{
System.out.print(mm[0]);
}
}
}else{
if(arr[1]==arr[2]){
System.out.print(mm[0]);
}else{
System.out.print(mm[0]);
}
}
}
}
牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)的更多相关文章
- 牛客网 PAT 算法历年真题 1003: 数素数 (20)
1003:数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整 ...
- 牛客网 PAT 算法历年真题 1002 :数字分类 (20)
1002 :数字分类 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定一系列正整数,请按要求对数字 ...
- 牛客网 PAT 算法历年真题 1012 : D进制的A+B (20)
D进制的A+B (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 输入两个非负10进制整数A和B(< ...
- 牛客网 PAT 算法历年真题 1009 : 1019. 数字黑洞 (20)
1019. 数字黑洞 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定任一个各位数字不完全相同的4 ...
- 牛客网 PAT 算法历年真题 1011 : 个位数统计 (15)
个位数统计 (15) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定一个k位整数N = dk-1*10k- ...
- 牛客网 PAT 算法历年真题 1010 : 月饼 (25)
月饼 (25) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 月饼是中国人在中秋佳节时吃的一种传统食品,不同地 ...
- 牛客网 PAT 算法历年真题 1001 : A+B和C (15)
1001 : A+B和C (15) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard 题目描述 给定区间[-2的31次方, 2的31次方]内 ...
- PAT乙级 1018. 锤子剪刀布 (20)
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
- PAT 乙级 1018 锤子剪刀布 (20) C++版
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
随机推荐
- 【转】构造自己的DIB类
ZC: 搜索"DIB_HEADER_MARKER"时,看到的这个文章 http://blog.csdn.net/yyyuhan/article/details/2026652 ...
- EditText取消焦点
EditText取消焦点: 在父容器添加: android:focusable="true" android:focusableInTouchMode="true&quo ...
- 《剑指offer》第六十八题(树中两个结点的最低公共祖先)
// 面试题68:树中两个结点的最低公共祖先 // 题目:输入两个树结点,求它们的最低公共祖先. #include <iostream> #include "Tree.h&quo ...
- Linux下HBase和Maven的环境搭建
Maven环境部署如下: maven下载并进行环变量配置 export MAVEN_HOME=/home/hadoop/app/apache-maven-3.3.9export PATH=$MAVEN ...
- appium --log-timestamp > appium.log
appium --log-timestamp > appium.log
- 使用Vue建立一个在线商店
git代码:https://github.com/chentianwei411/vue-router-demo.git 使用Vue-CLI3 webpack, ESLInt, Vuex, vue-ro ...
- You Don't Know JS: Scope & Closures (第3章: 函数 vs 块作用域)
第二章,作用域由一系列的bubbles组成.每一个都代表了一个container或bucket,装着被声明的identifiers(variables, functions).这些bubbles相互嵌 ...
- php多种方式获得文件扩展名
/** * * 五种方法获取文件扩展名 **/ $file_name="aa.txt"; echo strrchr($file_name, '.'); echo '<hr/& ...
- css之transform属性
定义元素的旋转(rotate),缩放(scale),移动(translate),倾斜(skew) rotate rotate(angle) 定义 2D 旋转,在参数中规定角度. rotate3d(x, ...
- python记录_day019 类的约束 异常处理 日志
一 .约束 python中约束有两种 第一种,通过抛异常进行约束,这种是子类不按我要求的来,我就给你抛异常(推荐) 操作:提取一个父类. 在父类中给出一个方法.但在方法中不给出任何代码,直接抛异常 # ...