PAT1018锤子剪刀布 (20)

本文介绍了一个基于字符输入的简易策略游戏程序,通过玩家选择C(剪刀)、J(石头)、B(布)进行多轮比赛,统计双方胜平负情况并给出最佳策略建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>

using namespace std;

int N;
int AW;
int BW;
int Ping;

int AC,AJ,AB;
int BC,BJ,BB;

int main()
{
	cin>>N;

	char inputA,inputB;
	for(int i=0;i<N;i++)
	{
		cin>>inputA>>inputB;
		if(inputA=='C')
		{
			if(inputB=='C')
			{
				Ping++;

			}else if(inputB=='J')
			{
				AW++;
				AC++;

			}else//inputB=='B'
			{
				BW++;
				BB++;
			}

		}
		else if(inputA=='J')
		{
			if(inputB=='C')
			{
				BW++;
				BC++;
			}else if(inputB=='J')
			{
				Ping++;

			}else//inputB=='B'
			{
				AW++;
				AJ++;
			}
		}else//inputA=='B'
		{
			if(inputB=='C')
			{
				AW++;
				AB++;
			}else if(inputB=='J')
			{
				BW++;
				BJ++;
			}else//inputB=='B'
			{
				Ping++;
			}
		}
	}


	cout<<AW<<" "<<Ping<<" "<<BW<<endl;
	cout<<BW<<" "<<Ping<<" "<<AW<<endl;

	char max='B';
	if(AB<AC)
	{
		max='C';
		if(AC<AJ)
		{
			max='J';
		}
	}
	else if(AB<AJ)
	{
		max='J';
	}

	cout<<max<<' ';


	max='B';
	if(BB<BC)
	{
		max='C';
		if(BC<BJ)
		{
			max='J';
		}
	}
	else if(BB<BJ)
	{
		max='J';
	}
	cout<<max<<endl;
}

### 关于 PAT 1018 的 Java 编程题解 对于 PAT (Programming Ability Test) 中编号为 1018 的题目,在使用 Java 解决该类问题时确实存在一些挑战,尤其是在性能方面。考虑到部分考生反馈使用 Java 可能会遇到超时的情况[^4]。 #### 使用高效算法优化输入输出操作 为了提高效率并避免因 I/O 操作而导致的时间消耗过多,可以采用 `BufferedReader` 和 `StringTokenizer` 来替代传统的 `Scanner` 类来进行快速的数据读取: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); // 假设此处处理逻辑... } } ``` #### 利用合适的数据结构解决问题 针对特定类型的计算任务选用恰当的数据结构能够显著提升程序执行速度。例如当涉及到频繁查询某个数值是否存在于集合内的情景下,优先考虑哈希表(HashSet 或 HashMap),而不是列表形式存储数据。 #### 示例解答框架 下面给出一段简化版的代码片段用于说明如何构建一个基本框架去解决此类竞赛型编程试题: ```java // 导入必要的包 import java.io.*; import java.util.*; class Solution { private static final int MAXN = ...; // 定义最大可能范围 public static void solve(BufferedReader reader, BufferedWriter writer) throws Exception{ // 初始化变量 // 处理输入 // 执行核心运算逻辑 // 输出结果至writer对象中 } public static void main(String[] args)throws Exception { try( BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)) ){ solve(reader, writer); } } } ``` 需要注意的是上述模板仅为示意性质,并未提供具体的业务逻辑实现细节;实际编写过程中需依据官方文档描述的具体需求完成相应功能模块的设计与编码工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值