浙江大学PAT (Basic Level) Practice (中文)1018锤子剪刀布JAVA实现代码及分析

1018

锤子剪刀布

在这里插入图片描述

在这里插入图片描述
这道题我觉着只能一次一次判断和记录甲方和乙方出手的状态和胜负,最后按照题目要求的格式进行记录数据的输出。但是用JAVA写成我这个样子的话有一个测试点超时过不去
在这里插入图片描述,这道题我也没用C++按照同样的逻辑再写一次,但是我觉着我这个逻辑上没什么问题,有大佬有更好的解法的话欢迎在评论区指点小生一下。

具体实现代码如下:

import java.util.Scanner;

public class Main{
    public static void main(String[] args) 
    {
    	Scanner input=new Scanner(System.in);
    	int N;
    	int JC=0,JJ=0,JB=0;
    	int YC=0,YJ=0,YB=0;
    	int P=0,S=0;
    	N=input.nextInt();
    	String SS[][]=new String[N][2];
    	for(int i=0;i<N;i++)
    	{
    		for(int j=0;j<2;j++)
    		{
    			SS[i][j]=input.next();
    		}
    		if(SS[i][0].equals(SS[i][1]))
    		{
    			P++;
    			continue;
    		}
    		else if(SS[i][0].equals("C")&&SS[i][1].equals("J"))
    		{
    			JC++;
    		}
    		else if(SS[i][0].equals("J")&&SS[i][1].equals("B"))
    		{
    			JJ++;
    		}
    		else if(SS[i][0].equals("B")&&SS[i][1].equals("C"))
    		{
    			JB++;
    		}
    		else if(SS[i][1].equals("C")&&SS[i][0].equals("J"))
    		{
    			YC++;
    		}
    		else if(SS[i][1].equals("J")&&SS[i][0].equals("B"))
    		{
    			YJ++;
    		}
    		else if(SS[i][1].equals("B")&&SS[i][0].equals("C"))
    		{
    			YB++;
    		}
    	}
    	S=JC+JJ+JB;
    	System.out.println(S+" "+P+" "+(N-S-P));
    	System.out.println((N-S-P)+" "+P+" "+S);
    	if(max(JJ,JB,JC)=='J')
    	{
    		System.out.print("J"+" ");
    	}
    	else if(max(JJ,JB,JC)=='B')
    	{
    		System.out.print("B"+" ");
    	}
    	else if(max(JJ,JB,JC)=='C')
    	{
    		System.out.print("C"+" ");
    	}
    	if(max(YJ,YB,YC)=='J')
    	{
    		System.out.print("J");
    	}
    	else if(max(YJ,YB,YC)=='B')
    	{
    		System.out.print("B");
    	}
    	else if(max(YJ,YB,YC)=='C')
    	{
    		System.out.print("C");
    	}
    }
    public static char max(int J,int B,int C)
    {
    	if(J>B&&J>C)
    	{
    		return 'J';
    	}
    	else if(B>=J&&B>=C)
    	{
    		return 'B';
    	}
    	else if(C>=J&&C>B)
    	{
    		return 'C';
    	}
    	return 'a';
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值