牛客网PAT题目——锤头剪刀布(Java)
2017-11-29 17:41
330 查看
题目详情见链接:
https://www.nowcoder.com/pat/6/problem/4044
思路:
分三种情况进行讨论
当甲乙平局时(甲乙分别出石头剪刀布)
当甲胜时
1)甲石头 乙剪刀
2)甲剪刀 乙布
3)甲布 乙石头
当乙胜时
1)甲石头 乙布
2)甲剪刀 乙石头
3)甲布 乙剪刀
定义一个4行3列的整型数组,第一行分别存甲胜平负的次数,第二行分别存甲获胜时出石头剪刀布的次数,相同的第三行存乙胜平负的次数,第四行存乙获胜时出石头剪刀布的次数。
思路简单但是写代码时有些复杂┭┮﹏┭┮
代码如下:
https://www.nowcoder.com/pat/6/problem/4044
思路:
分三种情况进行讨论
当甲乙平局时(甲乙分别出石头剪刀布)
当甲胜时
1)甲石头 乙剪刀
2)甲剪刀 乙布
3)甲布 乙石头
当乙胜时
1)甲石头 乙布
2)甲剪刀 乙石头
3)甲布 乙剪刀
定义一个4行3列的整型数组,第一行分别存甲胜平负的次数,第二行分别存甲获胜时出石头剪刀布的次数,相同的第三行存乙胜平负的次数,第四行存乙获胜时出石头剪刀布的次数。
思路简单但是写代码时有些复杂┭┮﹏┭┮
代码如下:
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int N=scanner.nextInt(); //双方交锋的次数 char[][] inf=new char [2]; String temp=""; for(int i=0;i<N;i++) { //记录双方交锋的信息 for(int j=0;j<2;j++) { temp=scanner.next(); inf[i][j]=temp.charAt(0); } } //第一行三列存甲胜负平的次数,第二行存甲获胜时石头剪刀布的次数 int[][] results=new int[4][3]; for(int i=0;i<inf.length;i++) { //当甲乙平局的情况 if((inf[i][0]=='C'&&inf[i][1]=='C')||(inf[i][0]=='J'&&inf[i][1]=='J')||(inf[i][0]=='B'&&inf[i][1]=='B')) { results[0][1]++; results[2][1]++; } //当甲胜的情况 if((inf[i][0]=='C'&&inf[i][1]=='J')||(inf[i][0]=='J'&&inf[i][1]=='B')||(inf[i][0]=='B'&&inf[i][1]=='C')) { results[0][0]++; //甲胜次数加1 results[2][2]++; //乙失败次数加1 if(inf[i][0]=='C') results[1][0]++; //甲获胜时出石头的次数 if(inf[i][0]=='J') results[1][1]++; //甲获胜时出剪刀的次数 if(inf[i][0]=='B') results[1][2]++; //甲获胜时出布的次数 } //当乙胜的情况 if((inf[i][0]=='C'&&inf[i][1]=='B')||(inf[i][0]=='J'&&inf[i][1]=='C')||(inf[i][0]=='B'&&inf[i][1]=='J')) { results[2][0]++; //乙获胜次数加1 results[0][2]++; //甲失败次数加1 if(inf[i][1]=='C') results[3][0]++; //乙获胜时出石头的次数 if(inf[i][1]=='J') results[3][1]++; //乙获胜时出剪刀的次数 if(inf[i][1]=='B') results[3][2]++; //乙获胜时出布的次数 } } System.out.println(results[0][0]+" "+results[0][1]+" "+results[0][2]); //输出甲的胜平负次数 System.out.println(results[2][0]+" "+results[2][1]+" "+results[2][2]); if(results[1][2]>=results[1][1] && results[1][2]>=results[1][0]) System.out.print("B "); else if(results[1][0]>=results[1][1] && results[1][0]>=results[1][2]) System.out.print("C "); else System.out.print("J "); if(results[3][2]>=results[3][1] && results[3][2]>=results[3][0]) System.out.println("B"); else if(results[3][0]>=results[3][1] && results[3][0]>=results[3][2]) System.out.println("C"); else System.out.println("J"); } }
相关文章推荐
- 牛客网PAT题目1001——A+B和C(Java)
- 牛客网PAT题目1002——数字分类(Java)
- Java - PAT - L1-025. 正整数A+B (天梯赛决赛题目)
- Java - PAT - L1-026. I Love GPLT(天梯赛决赛题目)
- 牛客网PAT乙级真题及java实现样例(真题1-14)
- PAT初级题目1011A+B和C(Java实现)
- Java - PAT - L1-027. 出租(天梯赛决赛题目)
- Java - PAT - L1-032. Left-pad(天梯赛决赛题目)
- 牛客网做题总结:剑指offer中题目,java版一
- Java笔试题目总结二(牛客网)
- 牛客网做题总结:剑指offer中题目,java版二
- PAT初级题目1009(Java实现)
- 牛客网做题总结:剑指offer中题目,java版三
- pat(B)1008 锤子剪刀布(Java)
- 五十道编程小题目 --- 28 八大排序算法 java 之 05冒泡排序
- java基础题目总结
- Java学习日志 17.04.30 之前一道题目
- 梅森素数(2013蓝桥杯java—A组题目)
- 编程题目:PAT(Advanced Level) Practice 1001. A+B Format (20)
- [Java经典题目]求圆周率的值