算法题练习系列之(十一):锤子剪刀布
2017-07-12 08:15
337 查看
--------------------------------------------------------------------------------------------------------------------------------------------------------
时间限制:1秒 空间限制:32768K 代码长度限制 100 KB
--------------------------------------------------------------------------------------------------------------------------------------------------------
[b]输入描述:[/b]
[b]输出描述:[/b]
[b]输入例子:[/b]
[b]输出例子:[/b]
--------------------------------------------------------------------------------------------------------------------------------------------------------
[b]实现思路:[/b]
(1).用两个数组存储甲乙双方的出手选择,逐一进行判断双方结果即可;
(2).有一点可以简化的是,至于总数统计,只统计一个人的即可,另一个人输赢平跟他相反。
--------------------------------------------------------------------------------------------------------------------------------------------------------
时间限制:1秒 空间限制:32768K 代码长度限制 100 KB
--------------------------------------------------------------------------------------------------------------------------------------------------------
题目描述
大家应该都会玩“锤子剪刀布”的游戏: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
[b]输入描述:[/b]
输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时 给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有 1个空格。
[b]输出描述:[/b]
输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙 获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。
[b]输入例子:[/b]
10 C J J B C B B B B C C C C B J B B C J J
[b]输出例子:[/b]
5 3 2 2 3 5 B B
--------------------------------------------------------------------------------------------------------------------------------------------------------
[b]实现思路:[/b]
(1).用两个数组存储甲乙双方的出手选择,逐一进行判断双方结果即可;
(2).有一点可以简化的是,至于总数统计,只统计一个人的即可,另一个人输赢平跟他相反。
--------------------------------------------------------------------------------------------------------------------------------------------------------
package com.biyao.algorithm.niuke.a1; import java.util.Scanner; public class Main_a1_008 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while(scan.hasNext()){ int n = scan.nextInt(); char[]jia = new char ; char[]yi = new char ; for (int i = 0; i < n; i++) { jia[i] = scan.next().charAt(0); yi[i] = scan.next().charAt(0); } stone(jia,yi); } } public static void stone(char[] jia,char[]yi){ int shengJ = 0,pingJ = 0,fuJ = 0; char jCountC = ' ',jCountJ = ' ',jCountB = ' '; char yCountC = ' ',yCountJ = ' ',yCountB = ' '; int len = jia.length; for (int i = 0; i < len; i++) { if(jia[i] == yi[i]){ pingJ++; }else{ //甲锤子,乙剪子 if(jia[i] == 'C' && yi[i] == 'J'){ shengJ++; jCountC++; } //甲剪子,乙布 if(jia[i] == 'J' && yi[i] == 'B'){ shengJ++; jCountJ++; } //甲布,乙锤子 if(jia[i] == 'B' && yi[i] == 'C'){ shengJ++; jCountB++; } //甲剪子,乙锤子 if(jia[i] == 'J' && yi[i] == 'C'){ fuJ++; yCountC++; } //甲锤子,乙布 if(jia[i] == 'C' && yi[i] == 'B'){ fuJ++; yCountB++; } //甲布,乙剪子 if(jia[i] == 'B' && yi[i] b424 == 'J'){ fuJ++; yCountJ++; } } } System.out.println(shengJ + " " + pingJ + " " + fuJ); System.out.println(fuJ + " " + pingJ + " " + shengJ); char j = ' '; int maxJ = Math.max(Math.max(jCountC, jCountJ),jCountB); if(jCountB == maxJ){ j = 'B'; }else if(jCountC == maxJ){ j = 'C'; }else if(jCountJ == maxJ){ j = 'J'; } char y = ' '; int maxY = Math.max(Math.max(yCountC, yCountJ),yCountB); if(yCountB == maxY){ y = 'B'; }else if(yCountC == maxY){ y = 'C'; }else if(yCountJ == maxY){ y = 'J'; } System.out.println(j + " " + y); } }
相关文章推荐
- 算法题练习系列之(三):成绩排序
- 算法题练习系列之(四十六):分解因数
- 算法题练习系列之(四十一):童年生活二三事
- 算法题练习系列之(十三): 月饼
- 算法题练习系列之(三十三): 有几个PAT
- 算法题练习系列之(五):数字分类
- 算法题练习系列之(十九): 程序运行时间
- 算法题练习系列之(一):守形数
- 算法题练习系列之(六):数素数
- 算法题练习系列之(九):部分A+B
- 算法题练习系列之(四十三):骨牌铺方格
- 算法题练习系列之(十):A除以B
- 算法题练习系列之(十六): 组个最小数
- 算法题练习系列之(三十四): 采花生
- 算法题练习系列之(二):矩阵最大值
- 算法题练习系列之(二十七): 有理数四则运算
- 算法题练习系列之(十二): 数字黑洞
- 算法题练习系列之(三十五): NowCoder数列
- 算法题练习系列之(四十四):NowCoder小定律
- 算法题练习系列之(二十): 打印沙漏