patb1018 石头剪刀布

本文展示了一个使用C++编写的简单游戏博弈程序,通过字符输入实现“剪刀石头布”游戏逻辑,记录并分析玩家之间的胜负情况。程序首先读取游戏轮数,接着收集每轮游戏中两位玩家的选择,并根据游戏规则更新胜利、平局和失败的计数。最后,程序输出双方的胜负统计及最优选择。

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

#include <iostream>
#include <stdio.h> 
using namespace std;
int change(char c){
if(c=='B') return 0;
if(c=='C') return 1;
if(c=='J') return 2;
}
int main(int argc, char** argv) {
int n;
scanf("%d",&n);
int numa[3]={0},numb[3]={0};
int posa[3]={0},posb[3]={0};
char mp[3]={'B','C','J'};
while(n--){
char a,b;
getchar();           //吸收字符; 
scanf("%c %c",&a,&b);
int k1=change(a);
int k2=change(b);
if((k1+1)%3==k2){      //k1可以吃掉k2; 
numa[0]++;
numb[2]++;
posa[k1]++;
}else if(k1==k2){
numa[1]++;
numb[1]++;
}else{
numa[2]++;
numb[0]++;
posb[k2]++;
}

}
printf("%d %d %d\n",numa[0],numa[1],numa[2]);
printf("%d %d %d\n",numb[0],numb[1],numb[2]);
int p1,p2;
for(int i=0;i<3;i++){
if(posa[i]>posa[p1]) p1=i;
if(posb[i]>posb[p2]) p2=i;
}
printf("%c %c",mp[p1],mp[p2]);
return 0;
}

### 关于 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、付费专栏及课程。

余额充值