请问这道C++题怎么做?

问题描述Alice、Bob和Cindy一起玩猜拳的游戏。和两个人的猜拳类似,每一轮,他们会从石头、剪刀、布中各自选一个出拳,基本的胜负规则是石头赢剪刀、剪刀赢布、布赢石头... 问题描述
Alice、Bob和 Cindy一起玩猜拳的游戏。
和两个人的猜拳类似,每一轮,他们会从石头、剪刀、布中各自选一个出拳,基本的胜负规则是石头赢剪刀、剪刀赢布、布赢石头。如果一轮中正好可以分成胜负两边,则负边的每个人要支付给胜边的每个人一块钱。如果无法分成胜负两边,则都不出钱。
比如,如果 Alice 出石头,而 Bob 和 Cindy 都出布,则 Alice 要分支付 Bob 和 Cindy 一块钱。
再如,如果 Alice出石头,Bob出剪刀,Cindy出布,则都不出钱。
他们三人共进行了 n轮游戏,请问最后每个人净赚多少钱?即赚的钱减去支付的钱是多少?
输入格式
输入的第一行包含一个整数n ,表示游戏总共进行了n 轮。
接下来 n行,每行三个整数,分别表示 Alice、Bob和 Cindy一轮中所出的拳,0表示石头,1表示剪刀,2表示布。
输出格式
输出三行,每行一个整数,分别表示 Alice、Bob和 Cindy净赚的钱数。
样例输入
3
0 2 2
0 1 2
1 1 1
样例输出
-2
1
1
评测用例规模与约定
对于所有的评测用例,。1<=n<=100
求代码
展开
 我来答
听不清啊
高粉答主

2021-08-05 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include <stdio.h>

#include <stdlib.h>

int main()

{ int n,i,a[3],b[3],win[3]= {0};

  scanf("%d",&n);

  while(n--)

  { b[0]=b[1]=b[2]=0;

    for(i=0; i<3; i++)

    { scanf("%d",&a[i]);

      b[a[i]]=1;

    }

    if(b[0]+b[1]+b[2]!=2)continue;

    if(abs(a[0]-a[1])==1)

    { if(a[0]<a[1])

        win[0]++,win[1]--;

      else win[0]--,win[1]++;

    }

    if(abs(a[0]-a[1])==2)

    { if(a[0]>a[1])

        win[0]++,win[1]--;

      else win[0]--,win[1]++;

    }

    if(abs(a[0]-a[2])==1)

    { if(a[0]<a[2])

        win[0]++,win[2]--;

      else win[0]--,win[2]++;

    }

    if(abs(a[0]-a[2])==2)

    { if(a[0]>a[2])

        win[0]++,win[2]--;

 蔽陆     else win[0]--,win[2]++;

    }

    if(abs(a[1]-a[2])==1)

    { if(a[1]<a[2])

        win[1]++,win[2]--;

      else win[1]--,win[2]++;

 空大   }

    if(abs(a[1]-a[2])==2)

    { if(a[1]>宏亏顷a[2])

        win[1]++,win[2]--;

      else win[1]--,win[2]++;

    }

  }

  for(i=0; i<3; i++)

    printf("%d\n",win[i]);

  return 0;

}

种烧饼的怪叔叔
2021-09-09 · TA获得超过2214个赞
知道小有建树答主
回答量:824
采纳率:65%
帮助的人:448万
展开全部

#include<iostream>

using namespace std;

int JD(int X,int Y)//判断剪刀石头布胜轮亮负的函数,胜利为1,平为0,输为-1

{

switch (X-Y) {case -1: return 1;break;

case 0: return 0;break;

case 2:return 1;break;

default :return -1;break;

}

}

int n,a,b,c,A,B,C;

int main()

{

cin>>n;

     while (n--)

{

cin>>a>>b>>c;

A+=JD(a,b)+JD(a,c);

B+=JD(b,a)+JD(b,c);

C+=JD(c,a)+JD(c,b);


}

  cout<敬让<A<<B<<腊稿宽C;

return 0;

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式