【题目链接】

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:石头剪刀布相关推荐

  1. 信息学奥赛一本通 1245:不重复地输出数 | OpenJudge NOI 1.11 08:不重复地输出数

    [题目链接] ybt 1245:不重复地输出数 OpenJudge NOI 1.11 08:不重复地输出数 [题目考点] 1. 二分查找 2. 复杂度为O(nlogn)的排序 快速排序:时间复杂度O( ...

  2. OpenJudge NOI 1.7 08:字符替换

    [题目链接] OpenJudge NOI 1.7 08:字符替换 [题目考点] 1. 字符串 [题解代码] 解法1:使用字符数组 #include <bits/stdc++.h> usin ...

  3. 信息学奥赛一本通 1124:矩阵加法 | OpenJudge NOI 1.8 08:矩阵加法

    [题目链接] ybt 1124:矩阵加法 OpenJudge NOI 1.8 08:矩阵加法 [题目考点] 1. 二维数组遍历 [题解代码] 解法1: #include<bits/stdc++. ...

  4. 信息学奥赛一本通 1114:白细胞计数 | OpenJudge NOI 1.9 08

    [题目链接] ybt 1114:白细胞计数 OpenJudge NOI 1.9 08:白细胞计数 [题目考点] 1. 求数组中最大值及其下标 方法1:保存最大值和下标 设置临时最大值变量mx,mx的初 ...

  5. OpenJudge NOI 1.5 08:多边形内角和

    [题目链接] OpenJudge NOI 1.5 08:多边形内角和 [题目考点] 循环 [题解代码] 解法1: 读入角的数量n 先通过(n-2)*180求出内角和,存入变量s中 读入n-1个角的度数 ...

  6. 信息学奥赛一本通 1046:判断一个数能否同时被3和5整除 | OpenJudge NOI 1.4 08

    [题目链接] ybt 1046:判断一个数能否同时被3和5整除 OpenJudge NOI 1.4 08:判断一个数能否同时被3和5整除 [题目考点] 1. 逻辑运算符:与&& 逻辑表 ...

  7. 信息学奥赛一本通 1021:打印字符 | OpenJudge NOI 1.2 08

    [题目链接] ybt 1021:打印字符 OpenJudge NOI 1.2 08:打印字符 [题目考点] 1. ASCII码表 ASCII码表是一张表,规定了0~127各数字对应的字符. 2. ch ...

  8. 信息学奥赛一本通 1013:温度表达转化 | OpenJudge NOI 1.3 08

    [题目链接] ybt 1013:温度表达转化 OpenJudge NOI 1.3 08:温度表达转化 [题目考点] 1. 书写计算表达式 了解* /的优先级高于+ - 了解()可以改变运算优先级 2. ...

  9. 信息学奥赛一本通 1004:字符三角形 | OpenJudge NOI 1.1 08

    [题目链接] ybt 1004:字符三角形 OpenJudge NOI 1.1 08:字符三角形 [题目考点] 声明字符型变量 char a; cin输出字符型变量 cin>>a; cou ...

最新文章

  1. 论文无法复现「真公开处刑」,PapersWithCode上线「论文复现报告」
  2. 汇总|精选CVPR开源项目学习资源
  3. 如何才能写出好的软件设计文档?
  4. 微软资深软件工程师:阅读代码真的很难
  5. pandas输出到excel_学Python还不会处理Excel数据?带你用pandas玩转各种数据处理
  6. 【数据结构与算法】顺序表的Java实现
  7. Mouse Jiggler – 自动移动光标,防止电脑启动屏保、进入休眠[Windows]
  8. IOS 计时器 NSTimer
  9. 发条js调试工具_【转载】移动端js调试工具:eruda
  10. 获取textarea每一行的内容_PLC编程的基本原则和方法,64页内容介绍PLC编程,值得收藏...
  11. 只需订阅“全部文章”专栏便可查看所有文章
  12. 几种常见的跨域原理的实现
  13. echarts 直方图加正态_在频数直方图上绘制正态分布曲线
  14. RAKsmart韩国服务器与日本服务器的差异
  15. 0005 前端 Html 04 AutoFileName 图片的显示 文字链接 图片链接 页面内链接 列表 加超链接的列表
  16. 什么是服务端与客户端详解
  17. 一文看懂PPP协议——PPP协议简介
  18. JSP简介-什么是Java Server Pages?
  19. [已解决] 输入信号超出范围,调整为1600x900@60Hz
  20. c++处理excel

热门文章

  1. Eval绑定日期时,修改日期显示的格式
  2. slice与substring与substr
  3. 源码详解Java的反射机制
  4. 没看过这5本硬核技术书,就别说你懂大数据
  5. 0.07 秒启动一个 SpringBoot 项目!
  6. Spring 5的最终功能发行版即将来临
  7. 太赞了:《Spring Framework 4.x 参考文档》最新中文版开放下载!
  8. 关于HashMap容量的初始化,还有这么多学问。
  9. MyBatis 实践 -Mapper与DAO
  10. 数据结构基础(10) --单链表迭代器的设计与实现