【C语言】打牌游戏

相信你是最棒哒!!!

文章目录

题目描述 

正确代码

总结


题目描述 

Suneet 和 Slavic 玩一个卡牌游戏。游戏规则如下:

  • 每张卡片的整数值在 1 和 10之间。
  • 每位玩家获得 2 张面朝下的卡片(因此玩家不知道自己的卡片)。
  • 游戏是回合制的,且 恰好进行两轮。在每轮中,两位玩家随机选择一张 未翻开的 卡片并翻开。翻开卡片数字严格较大的玩家赢得该轮。如果数字相等,则无人获胜。
  • 如果一位玩家赢得的轮数超过另一位玩家(即严格大于),则该玩家赢得游戏。如果轮数相等,则无人获胜。

由于 Suneet 和 Slavic 不是最好的朋友,你需要计算 Suneet 最终获胜的游戏可能性数量。

为了更好地理解,请查看备注部分。

输入

第一行包含一个整数 𝑡 (1≤𝑡≤104) — 测试用例的数量。 

每个测试用例的唯一一行包含 44 个整数 𝑎1​, 𝑎2, 𝑏1, 𝑏2 (1≤𝑎1,𝑎2,𝑏1,𝑏2≤10),其中 𝑎1​ 和 a2​ 代表 Suneet 拥有的卡片,而 b1​ 和 b2​ 代表 Slavic 拥有的卡片。

输出

对于每个测试用例,输出一个整数 — Suneet 在所有可能的游戏中获胜的游戏数量。

示例

InputOutput
5
3 8 2 6
1 1 1 1
10 10 2 2
1 1 10 10
3 8 7 2
2
0
4
0
2

备注

考虑第一个测试用例,当 Slavic 拥有值为 2 和 6 的卡片,而 Suneet 拥有值为 3 和 8 的卡片时。游戏可能以 4 种不同的方式进行:

  • Suneet 翻开 3,Slavic 翻开 2。Suneet 赢得第一轮。然后,Suneet 翻开 8,Slavic 翻开 66。Suneet 也赢得第二轮。由于 Suneet 赢得了 2 轮,他赢得了游戏。

  • Suneet 翻开 3,Slavic 翻开 6。Slavic 赢得第一轮。然后,Suneet 翻开 8,Slavic 翻开 2。Suneet 赢得第二轮。由于两位玩家赢得的轮数相等,没人获胜。

  • Suneet 翻开 8,Slavic 翻开 6。Suneet 赢得第一轮。然后,Suneet 翻开 3,Slavic 翻开 2。Suneet 也赢得第二轮。由于 Suneet 赢得了 2 轮,他赢得了游戏。

  • Suneet 翻开 8,Slavic 翻开 2。Suneet 赢得第一轮。然后,Suneet 翻开 3,Slavic 翻开 6。Slavic 赢得这一轮。由于两位玩家赢得的轮数相等,没人获胜。

正确代码

注释版

#include <stdio.h> 

int main() { 
    int t;
    scanf("%d", &t); 

    while (t--) { // 使用while循环来处理每一个测试用例,每次循环处理一个用例,直到t减到0
        int a1, a2, b1, b2; // 定义四个整数变量,分别用于存储Suneet和Slavic手中的两张卡牌的数值
        scanf("%d %d %d %d", &a1, &a2, &b1, &b2); // 从标准输入读取四个整数,分别存储在变量a1, a2, b1, b2中
        int cnt = 0; // 定义一个计数器变量cnt,用于记录Suneet赢牌的组合数量,初始值为0

        // 判断第一种出牌情况:Suneet出a1对Slavic的b1,Suneet出a2对Slavic的b2
        if ((a1 > b1 && a2 >= b2) || (a1 >= b1 && a2 > b2)) 
            cnt++; // 如果Suneet的a1大于Slavic的b1,并且a2大于等于b2;或者a1大于等于b1,并且a2大于b2,则Suneet在这种情况下赢,cnt加1

        // 判断第二种出牌情况:Suneet出a1对Slavic的b2,Suneet出a2对Slavic的b1
        if ((a1 > b2 && a2 >= b1) || (a1 >= b2 && a2 > b1)) 
            cnt++; // 如果Suneet的a1大于Slavic的b2,并且a2大于等于b1;或者a1大于等于b2,并且a2大于b1,则Suneet在这种情况下赢,cnt加1

        printf("%d\n", cnt * 2); // 输出Suneet赢牌的组合数量,由于每种情况都有两种出牌顺序(即先后顺序),所以将cnt乘以2
    }
    return 0; 
}

简洁版

#include <stdio.h> 
int main() {
    int t; 
    scanf("%d", &t); 
    while (t--) { 
        int a1, a2, b1, b2; 
        scanf("%d %d %d %d", &a1, &a2, &b1, &b2);
        int cnt = 0; 
        if ((a1 > b1 && a2 >= b2) || (a1 >= b1 && a2 > b2))
            cnt++; 
        if ((a1 > b2 && a2 >= b1) || (a1 >= b2 && a2 > b1))
            cnt++; 
        printf("%d\n", cnt * 2);
    }
    return 0; 
}

总结

在这个卡牌游戏中,每个玩家都有两张牌,每轮游戏双方各出一张牌。由于出牌的顺序有两种可能性(即玩家A先出牌或玩家B先出牌),所以对于每一种牌的组合情况,实际上有两种不同的出牌顺序。

例如,如果Suneet有牌a1a2,Slavic有牌b1b2,那么可能的出牌顺序有:

  1. Suneet出a1对Slavic的b1,然后Suneet出a2对Slavic的b2
  2. Suneet出a1对Slavic的b2,然后Suneet出a2对Slavic的b1
  3. Suneet出a2对Slavic的b1,然后Suneet出a1对Slavic的b2
  4. Suneet出a2对Slavic的b2,然后Suneet出a1对Slavic的b1

这四种出牌顺序中,第1和第4种是Suneet先出a1,第2和第3种是Suneet先出a2。对于每一种牌的组合,都有这样两种出牌顺序,所以对于每一种赢牌的组合情况,实际上有两倍的出牌方式。这就是为什么在计算Suneet赢牌的组合数量时,需要将cnt乘以2的原因。这样做是为了考虑到所有可能的出牌顺序,确保我们计算的是所有可能的游戏结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/939055.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【六足机器人】04上位机开发

图&#xff1a;QT界面效果图 一、主要功能介绍 1.1 登录界面 登录界面&#xff0c;用来判断是否账号密码输入正确&#xff0c;错误将会弹出消息框。 void first::on_enroll_clicked(){if(ui->account->text()"共创芯未来"&&ui->password->text…

RockyLinux9编译安装MySQL5.7

原文链接&#xff1a;RockyLinux9编译安装MySQL5.7 - Liu Zijians Blog | 刘子健的博客 本文最后更新于 2024年12月15日 使用源码编译安装MySQL5.7 1.下载 打开MySQL-Community-Server官方下载页面:https://downloads.mysql.com/archives/community/ 筛选出要下载的版本&…

什么是3DEXPERIENCE SOLIDWORKS,它有哪些角色和功能?

将业界领先的 SOLIDWORKS 3D CAD 解决方案连接到基于单一云端产品开发环境 3DEXPERIENCE 平台。您的团队、数据和流程全部连接到一个平台进行高效的协作工作&#xff0c;从而能快速的做出更好的决策。 目 录&#xff1a; ★ 1 什么是3DEXPERIENCE SOLIDWORKS ★ 2 3DEXPERIE…

OpenCVE:一款自动收集NVD、MITRE等多源知名漏洞库的开源工具,累计收录CVE 27万+

漏洞库在企业中扮演着至关重要的角色&#xff0c;不仅提升了企业的安全防护能力&#xff0c;还支持了安全决策、合规性要求的满足以及智能化管理的发展。前期博文《业界十大知名权威安全漏洞库介绍》介绍了主流漏洞库&#xff0c;今天给大家介绍一款集成了多款漏洞库的开源漏洞…

《Redis设计与实现》读书笔记-客户端

目录 1.Client简介 2.客户端属性 1&#xff09;&#xff08;本文重点&#xff09;比较通用的属性 2&#xff09;&#xff08;后续分享&#xff09;另外一类是和特定功能相关的属性 2.1套接字文件描述符 2.2名字 2.3标志&#xff08;flag&#xff09; 2.4输入缓冲区 2.…

Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置

目录 一. 前置条件二. Win10安装配置Oracle数据库2.1 数据库获取2.2 数据库安装2.3 数据库配置确认2.4 数据库访问 三. Win10配置Oracle数据库可对外访问3.1 打开文件和打印机共享3.2 开放1521端口 四. 端口与地址确认4.1 查看监听器的状态4.2 Win10查看1521端口是否被监听4.3 …

10篇--图像噪点消除

概念 何为噪点&#xff1f; 噪点&#xff1a;指图像收到的一些干扰因素&#xff0c;通常是由图像采集设备、传输信道等因素造成的&#xff0c;表现为图像中随机的亮度&#xff0c;也可以理解为有那么一些点的像素值与周围的像素值格格不入。 常见的噪声类型 高斯噪声&#…

【开源免费】基于Vue和SpringBoot的渔具租赁系统(附论文)

本文项目编号 T 005 &#xff0c;文末自助获取源码 \color{red}{T005&#xff0c;文末自助获取源码} T005&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 渔…

Linux网络基础-----传输层UDP协议

目录 端口号&#xff1a; 查询各类服务的端口号 加深理解端口号&#xff1a; UDP协议 UDP协议特点&#xff1a; 关于缓冲区&#xff1a; 内核层面理解UDP报文 端口号&#xff1a; 知名端口号&#xff1a;0 ~ 1023&#xff1a;被HTTP、SSH等应用层协议广泛使用的端口号&…

XXE靶场

XXE-lab 靶场 靶场网址&#xff1a;http://172.16.0.87/ 第一步我们看到网站有登录框我们试着用 bp 去抓一下包 将抓到的包发到重放器中 然后我们构建palody <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "php://filter/readconvert.base64-encode/resourceC:/flag/fla…

ubuntu+ros新手笔记(三):21讲没讲到的MoveIt2

1 安装MoveIt2 安装参照在ROS2中&#xff0c;通过MoveIt2控制Gazebo中的自定义机械手 安装 MoveIt2可以选择自己编译源码安装&#xff0c;或者直接从二进制安装。 个人建议直接二进制安装&#xff0c;可以省很多事。 sudo apt install ros-humble-moveitmoveit-setup-assistan…

运维 mysql、redis 、RocketMQ性能排查

MySQL查看数据库连接数 1. SHOW STATUS命令-查询当前的连接数 MySQL 提供了一个 SHOW STATUS 命令&#xff0c;可以用来查看服务器的状态信息&#xff0c;包括当前的连接数。 SHOW STATUS LIKE Threads_connected;这个命令会返回当前连接到服务器的线程数&#xff0c;即当前…

jmeter连接mysql

查询mysql数据库版本 SELECT VERSION(); 下载jmeter mysql 驱动jar包&#xff0c;版本低于mysql版本&#xff0c;放在jmeter的lib 路径下 MySQL :: Download MySQL Connector/J (Archived Versions) 添加JDBC Connection Configuration 填写 variable name 及数据库信息 注意…

Docker的容器

目录 1. 什么是容器&#xff1f;2. 容器的生命周期2.1 容器处理OOM事件2.2 容器异常退出2.3 容器暂停 3. 容器命令详解3.1 容器命令清单3.2 docker create命令3.3 docker run命令3.4 docker ps命令3.5 docker logs命令3.6 docker attach命令3.7 docker exec命令3.8 docker stat…

JAVA题目笔记(二十六)反射

一、保存信息 Student类&#xff1a; package testpackage;import java.io.IOException;public class Student {private String name;private String area;public String testfield;private int age;public Student() {}public Student(String name, String area, int age) {t…

python 配置 oracle instant client

1.问题描述 想用python连接oracle数据库&#xff0c;百度得知需要cx_Oracle这个第三方库 import cx_Oracle# 设置Oracle数据源名称 dsn cx_Oracle.makedsn(host, port, service_nameservice_name)# 创建数据库连接 connection cx_Oracle.connect(userusername, passwordpas…

皮肤伤口分割数据集labelme格式248张5类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;284 标注数量(json文件个数)&#xff1a;284 标注类别数&#xff1a;5 标注类别名称:["bruises","burns","cu…

Ollama配置与webUI本地部署-学习记录

Ollama 前言一、Ollama的下载与安装设置(windows)1.下载2.安装与配置1.查看环境变量&#xff1a;2.设置环境变量&#xff1a;3.设置变量 二、使用步骤1.查找模型2.使用Ollama1.下载模型2.使用 三、WebUI部署WebUI 总结 前言 Ollama是一款可以开始使用本地的大型语言模型。启动…

vscode不同项目使用不同插件

转载请注明出处&#xff1a;小帆的帆的博客 在使用vscode开发不同项目时可能会用到不同的插件。手动管理不够优雅&#xff0c;本文介绍使用Profiles的方式的来管理不同项目的插件。 手动管理不同项目的插件 本来vscode安装了有三个插件 这时需要新建一个项目&#xff0c;新…

数据结构 ——前缀树查词典的实现

数据结构 ——前缀树查词典的实现 一、前缀树的概念 前缀树是一种多叉树结构&#xff0c;主要用于存储字符串。每个节点代表一个字符&#xff0c;路径从根节点到叶节点表示一个完整的字符串。前缀树的关键特征是 共享前缀&#xff0c;也就是说&#xff0c;如果两个字符串有相…