牛客网 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 大家应该都会玩“锤子剪刀布”的游 ...
随机推荐
- dataTables使用整理(一)
初次使用dataTables,对一些用到的属性及遇到的问题做一个简要的记录 参考资料: http://blog.csdn.net/mickey_miki/article/details/8240477 ...
- Easyui使用心得(1)--DateGrid表格
最近一直在用easyui这个控件,有一点心得,在这里和大家分享一下,也是对自己工作的一个小小的总结,希望可以形成一个完整的Easyui的笔记体系,可以方便更多的人 因为自己也是在摸索中前进,难免有遗漏 ...
- [转]jsbsim基础概念
转自: 么的聊链接:https://www.jianshu.com/p/a0b4598f928a 虽然用户不需要掌握太多 JSBSim 飞行模拟器的细节,但是了解 JSBSim 的基本工作流程也会对学 ...
- Bootstrap 4正式发布还有意义吗?
历经三年开发,前端框架Bootstrap 4正式发布了.然而今天的Web世界已经和当初Mark Otto发布Bootstrap时的情况大为不同,一些开发者由此质疑它的更新是否还有意义. V4版本的主要 ...
- 力扣(LeetCode) 217. 存在重复元素
给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 true.如果数组中每个元素都不相同,则返回 false. 示例 1: 输入: [1,2,3,1] 输出: true ...
- vuex学习与实践——mapState、getter、mapGetters
1.mapState辅助函数 当一个组件需要获取多个状态时候,将这些状态都声明为计算属性会有些重复和冗余.为了解决这个问题,我们可以使用 mapState 辅助函数帮助我们生成计算属性,让你少按几次键 ...
- Ajax请求导出Excel的问题
文章转载自: http://yuwenlin.iteye.com/blog/2275289 Ajax请求导出Excel的问题描述: 前端发起Ajax请求get或post,后台使用Poi生成excel文 ...
- spring boot ----> spring boot 和spring的联系
1.自动配置的实现是基于spring 4.0的条件化配置,这是spring 4.0的新特性.比如,定义一个类A,它实现Condition接口,覆盖condition接口的match()方法,那么该类变 ...
- LeetCode--371--两整数之和
问题描述: 方法: class Solution(object): def getSum(self, a, b): """ :type a: int :type b: i ...
- 【洛谷p1507】NASA的食物计划
(一次a……) NASA的食物计划[传送门] 好的上算法标签: 嗯这是个二维背包 (万年不变分隔线) 二维的题就是在一维基础上增加了一个条件,这个背包不仅含有质量还有体积.所以我们增加一层循环.核心算 ...