1018 锤子剪刀布 (20 分)

简介: 1018 锤子剪刀布 (20 分)

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

这题思路比较简单,用模拟的方法就能做出。只是这样做用到很多判断。

用条件运算符  (例如(a>b? a :b)   )可以缩短代码长度,但是会降低代码可读性。

 

#include<iostream>
using namespace std;
struct play
{
  int win;
  int lose;
  int tie;
};
char cc(int ab, int ac, int aj);
int main()
{
  int n;
  cin >> n;
  play A = { 0,0,0 };
  play B = { 0,0,0 };
  char player1, player2;
  int ab = 0, aj = 0, ac = 0;
  int bb = 0, bj = 0, bc = 0;
  for (int i = 0; i < n; i++) {
    cin >> player1>>player2;
    if (player1 == player2) {
      A.tie++;
      B.tie++;
    }
    else if (player1 == 'C' && player2 == 'J' ||
      player1 == 'J' && player2 == 'B' ||
      player1 == 'B' && player2 == 'C') {
      A.win++;
      player1 == 'C' ? (ac++) : (player1 == 'B' ? (ab++) : (aj++));
      B.lose++;
    }
    else {
      A.lose++;
      (player2 == 'C') ? (bc++) : (player2 == 'B' ? (bb++) : (bj++));
      B.win++;
    }
  }
 
  cout <<A.win<< " "<<A.tie << " "<<A.lose<<endl;
  cout <<B.win << " "<<B.tie<< " "<<B.lose<<endl;
  cout << cc(ab,ac,aj)<<" "<<cc(bb,bc,bj);
  return 0;
}
char cc(int ab, int ac, int aj) {
  if (ab >= ac && ab >= aj) {
    return 'B';
  }
  if (ac > ab && ac >= aj) {
    return 'C';
  }
  if (aj > ac && aj > ab) {
    return 'J';
  }
}
相关文章
|
2月前
|
算法
联想算法题-石头剪刀布
联想算法题-石头剪刀布
55 0
|
12月前
小游戏(猜数字、剪刀石头布) 2021-01-03
小游戏(猜数字、剪刀石头布) 2021-01-03
|
7月前
|
存储 JavaScript 索引
基于 HTML+CSS+JS 的石头剪刀布游戏
基于 HTML+CSS+JS 的石头剪刀布游戏
95 0
|
10月前
|
算法
石头剪刀布 L1-044 稳赢 15分
石头剪刀布 L1-044 稳赢 15分
|
10月前
|
弹性计算 数据安全/隐私保护 Python
石头剪刀布
本场景介绍如何在阿里云ECS环境下用Python实现一款人机对战小游戏:石头剪刀布。
307 0
|
11月前
|
Shell
脚本编写 剪刀 、 石头、布游戏
脚本编写 剪刀 、 石头、布游戏
105 1
|
11月前
[普及练习场] 生活大爆炸版石头剪刀布
[普及练习场] 生活大爆炸版石头剪刀布
130 0
|
测试技术 Python
PTA 1018 锤子剪刀布 (20 分)
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示
135 0
PAT刷题笔记-PAT乙1018-锤子剪刀布
PAT刷题笔记-PAT乙1018-锤子剪刀布
103 0
PAT刷题笔记-PAT乙1018-锤子剪刀布
|
Java
Java锤子剪刀布大家应该都会玩“锤子剪刀布”的游戏: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
Java锤子剪刀布大家应该都会玩“锤子剪刀布”的游戏: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
147 0