OpenJudge NOI 1.16 08:石头剪刀布
【题目链接】
OpenJudge NOI 1.16 08:石头剪刀布
【题目考点】
1. 数组
2. 循环遍历数组
循环遍历下标为0~n-1的数组时,取下一个下标的方法为:
i = (i+1)%n;
循环遍历下标为1~n的数组,取下一个下标的方法:
i = i+1 > n ? i+1-n : i+1;
【解题思路】
用a,b两个数组保存两人的出拳规律,循环n次,循环遍历a、b两个数组,取出两个数值,按石头剪刀布的规则判定a、b的胜负,做计数。最后根据计数输出结果。
【题解代码】
解法1:数组下标为0~n-1
#include<bits/stdc++.h>
using namespace std;
int main()
{int n, na, nb, a[105], b[105], awin = 0, bwin = 0;//awin:a赢的次数 bwin:b赢的次数 cin >> n >> na >> nb;for(int i = 0; i < na; ++i)cin >> a[i];for(int i = 0; i < nb; ++i)cin >> b[i];int ia = 0, ib = 0;//ia:a当前出拳序号 ib:b当前出拳序号for(int i = 0; i < n; ++i){int ca = a[ia], cb = b[ib];//当前a、b的出拳if (ca != cb){if(ca == 0 && cb == 2 || ca == 2 && cb == 5 || ca == 5 && cb == 0)//如果a赢过b awin++;else//如果b赢过a bwin++;}ia = (ia + 1) % na;ib = (ib + 1) % nb;}if (awin > bwin)cout << 'A' << endl;else if (bwin > awin)cout << 'B' << endl;elsecout << "draw" << endl;return 0;
}
解法2:数组下标为1~n
#include<bits/stdc++.h>
using namespace std;
int main()
{int n, na, nb, a[105], b[105], awin = 0, bwin = 0;//awin:a赢的次数 bwin:b赢的次数 cin >> n >> na >> nb;for(int i = 1; i <= na; ++i)cin >> a[i];for(int i = 1; i <= nb; ++i)cin >> b[i];int ia = 1, ib = 1;//ia:a当前出拳序号 ib:b当前出拳序号for(int i = 1; i <= n; ++i){int ca = a[ia], cb = b[ib];//当前a、b的出拳if (ca != cb){if(ca == 0 && cb == 2 || ca == 2 && cb == 5 || ca == 5 && cb == 0)//如果a赢过b awin++;else//如果b赢过a bwin++;}ia = ia + 1 > na ? ia + 1 - na : ia + 1;//循环遍历数组 下标变化 ib = ib + 1 > nb ? ib + 1 - nb : ib + 1;}if (awin > bwin)cout << 'A' << endl;else if (bwin > awin)cout << 'B' << endl;elsecout << "draw" << endl;return 0;
}
OpenJudge NOI 1.16 08:石头剪刀布相关推荐
- 信息学奥赛一本通 1245:不重复地输出数 | OpenJudge NOI 1.11 08:不重复地输出数
[题目链接] ybt 1245:不重复地输出数 OpenJudge NOI 1.11 08:不重复地输出数 [题目考点] 1. 二分查找 2. 复杂度为O(nlogn)的排序 快速排序:时间复杂度O( ...
- OpenJudge NOI 1.7 08:字符替换
[题目链接] OpenJudge NOI 1.7 08:字符替换 [题目考点] 1. 字符串 [题解代码] 解法1:使用字符数组 #include <bits/stdc++.h> usin ...
- 信息学奥赛一本通 1124:矩阵加法 | OpenJudge NOI 1.8 08:矩阵加法
[题目链接] ybt 1124:矩阵加法 OpenJudge NOI 1.8 08:矩阵加法 [题目考点] 1. 二维数组遍历 [题解代码] 解法1: #include<bits/stdc++. ...
- 信息学奥赛一本通 1114:白细胞计数 | OpenJudge NOI 1.9 08
[题目链接] ybt 1114:白细胞计数 OpenJudge NOI 1.9 08:白细胞计数 [题目考点] 1. 求数组中最大值及其下标 方法1:保存最大值和下标 设置临时最大值变量mx,mx的初 ...
- OpenJudge NOI 1.5 08:多边形内角和
[题目链接] OpenJudge NOI 1.5 08:多边形内角和 [题目考点] 循环 [题解代码] 解法1: 读入角的数量n 先通过(n-2)*180求出内角和,存入变量s中 读入n-1个角的度数 ...
- 信息学奥赛一本通 1046:判断一个数能否同时被3和5整除 | OpenJudge NOI 1.4 08
[题目链接] ybt 1046:判断一个数能否同时被3和5整除 OpenJudge NOI 1.4 08:判断一个数能否同时被3和5整除 [题目考点] 1. 逻辑运算符:与&& 逻辑表 ...
- 信息学奥赛一本通 1021:打印字符 | OpenJudge NOI 1.2 08
[题目链接] ybt 1021:打印字符 OpenJudge NOI 1.2 08:打印字符 [题目考点] 1. ASCII码表 ASCII码表是一张表,规定了0~127各数字对应的字符. 2. ch ...
- 信息学奥赛一本通 1013:温度表达转化 | OpenJudge NOI 1.3 08
[题目链接] ybt 1013:温度表达转化 OpenJudge NOI 1.3 08:温度表达转化 [题目考点] 1. 书写计算表达式 了解* /的优先级高于+ - 了解()可以改变运算优先级 2. ...
- 信息学奥赛一本通 1004:字符三角形 | OpenJudge NOI 1.1 08
[题目链接] ybt 1004:字符三角形 OpenJudge NOI 1.1 08:字符三角形 [题目考点] 声明字符型变量 char a; cin输出字符型变量 cin>>a; cou ...
最新文章
- 论文无法复现「真公开处刑」,PapersWithCode上线「论文复现报告」
- 汇总|精选CVPR开源项目学习资源
- 如何才能写出好的软件设计文档?
- 微软资深软件工程师:阅读代码真的很难
- pandas输出到excel_学Python还不会处理Excel数据?带你用pandas玩转各种数据处理
- 【数据结构与算法】顺序表的Java实现
- Mouse Jiggler – 自动移动光标,防止电脑启动屏保、进入休眠[Windows]
- IOS 计时器 NSTimer
- 发条js调试工具_【转载】移动端js调试工具:eruda
- 获取textarea每一行的内容_PLC编程的基本原则和方法,64页内容介绍PLC编程,值得收藏...
- 只需订阅“全部文章”专栏便可查看所有文章
- 几种常见的跨域原理的实现
- echarts 直方图加正态_在频数直方图上绘制正态分布曲线
- RAKsmart韩国服务器与日本服务器的差异
- 0005 前端 Html 04 AutoFileName 图片的显示 文字链接 图片链接 页面内链接 列表 加超链接的列表
- 什么是服务端与客户端详解
- 一文看懂PPP协议——PPP协议简介
- JSP简介-什么是Java Server Pages?
- [已解决] 输入信号超出范围,调整为1600x900@60Hz
- c++处理excel