PAT (Basic Level) Practice (中文) B1018. 锤子剪刀布

简介: PAT (Basic Level) Practice (中文) B1018. 锤子剪刀布

题目描述


大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。


输入格式


输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。


输出格式


输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。


输入样例


10

C J

J B

C B

B B

B C

C C

C B

J B

B C

J J


输出样例


5 3 2

2 3 5

B B


个人代码:


//

#include<bits/stdc++.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 n,k1,k2;
  char c1,c2;
  int a[20]={0};
  int b[20]={0};
  int awin[10]={0};
  int bwin[10]={0}; 
  scanf("%d",&n);
  getchar();
  for(int i=1;i<=n;i++)
  {
    scanf("%c %c",&c1,&c2);
    getchar();
    k1=change(c1);
    k2=change(c2);
    if((k1+1)%3==k2)
    {
      a[0]++;
      b[2]++;
      awin[k1]++;
    }
    if(k1==k2)
    {
      a[1]++;
      b[1]++;
    }
    if((k2+1)%3==k1)
    {
      b[0]++;
      a[2]++;
      bwin[k2]++;
    }
  }
  printf("%d %d %d\n",a[0],a[1],a[2]);
  printf("%d %d %d\n",b[0],b[1],b[2]);
  int cwin=0;
  int dwin=0;
  int w1,w2;
  char mp[3]={'B','C','J'};
  for(int i=0;i<3;i++)
  {
    if(awin[i]>awin[cwin])
    {
      cwin=i;
    }
    if(bwin[i]>bwin[dwin])
    {
      dwin=i;
    }
  }
  printf("%c %c",mp[cwin],mp[dwin]);
 } 

分析:


输出要求是要输出甲乙两个人的胜负平局情况,所以先设定两个数组a[20],b[20]存储胜负平情况,a[0]表示胜利,a[1]表示平局,a[2]表示失败,如果甲胜利的话,就是a[0]++b[2]++,如果甲乙平局的话,就是a[1]++,b[1]++;如果乙胜利的话,b[2]++,a[0]++;其中a[0]表示的是胜利,a[1]表示的是平局,a[2]表示的是失败,每读入一组数据,就将数组信息变更,对于找胜率最高的情况,可以设置数组awin[]和bwin[],a[0]表示的是B获胜的情况,a[1]表示的是C获胜的情况,a[2]表示的是J获胜的情况,之后比较三个数组的值就好,为了方便一点,可以另外设置一个数组mp,用来存放B C J,方便输出结果。


注意:


数组有点多,有点乱,需要自己好好琢磨一下。

第一次测试点三没有通过,原因是找最大的情况的时候算法有点错误。已更正。

微信图片_20220927123438.png

相关文章
|
1月前
|
移动开发 vr&ar 数据安全/隐私保护
no-strings-attached-入土为安的第十一天
no-strings-attached-入土为安的第十一天
22 0
2022天梯赛三月冲刺——PAT (Advanced Level)1013 Battle Over Cities (并查集找连通块)
2022天梯赛三月冲刺——PAT (Advanced Level)1013 Battle Over Cities (并查集找连通块)
90 0
|
C语言 C++
PAT (Basic Level) Practice (中文)1099 性感素数(20分)
“性感素数”是指形如 (p, p+6) 这样的一对素数。之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。(原文摘自 http://mathworld.wolfram.com/SexyPrimes.html) 现给定一个整数,请你判断其是否为一个性感素数。
129 0
|
存储
PAT (Basic Level) Practice (中文) 1041 考试座位号 (15 分)
PAT (Basic Level) Practice (中文) 1041 考试座位号 (15 分)
85 0
PAT (Basic Level) Practice (中文) 1041 考试座位号 (15 分)
PAT (Basic Level) Practice (中文) 1036 跟奥巴马一起编程 (15 分) p89
PAT (Basic Level) Practice (中文) 1036 跟奥巴马一起编程 (15 分) p89
154 0
|
存储 测试技术
PAT (Basic Level) Practice (中文) 1004 成绩排名 (20 分)
PAT (Basic Level) Practice (中文) 1004 成绩排名 (20 分)
84 0
|
算法
PAT (Basic Level) Practice (中文)1028. 人口普查(20分)
PAT (Basic Level) Practice (中文)1028. 人口普查(20分)
101 0
PAT (Basic Level) Practice (中文)- 1065 单身狗(25 分)
PAT (Basic Level) Practice (中文)- 1065 单身狗(25 分)
87 0
PAT (Basic Level) Practice (中文)- 1052 卖个萌(20 分)
PAT (Basic Level) Practice (中文)- 1052 卖个萌(20 分)
95 0
|
人工智能 Java
HDU - 2018杭电ACM集训队单人排位赛 - 4 - Problem J. number sequence
HDU - 2018杭电ACM集训队单人排位赛 - 4 - Problem J. number sequence
128 0