首页 > 其他分享 >石头-剪刀-布

石头-剪刀-布

时间:2022-11-30 10:06:40浏览次数:55  
标签:p2 p1 shu 石头 && rock ying 剪刀


描述


石头-剪刀-布是两个人玩的游戏。假设有两个人A和B,每个人都独立地选择石头,布或剪刀。选布的赢选石头的,选剪刀的赢选布的,选石头的赢选剪刀的,选相同的既不赢又不输。
n个人参加,每个人与其他每个人比k轮石头-布-剪刀游戏,总共最多要赛k*n*(n-1)/2场。你的工作是计算每个人赢的平均数,这个平均数定义为W/(W+L),其中W是赢的场数,而L是输的场数。


输入


输入有多个测试用例。每个测试用例的第一行是n,k(1 ≤ n ≤ 1000 ,1 ≤ k ≤ 10000),n是参加的人数,k是每个人比赛的场数。对每场比赛,由包含四个整数的一行表示:p1,m1,p2,m2.其中1 ≤p1 ≤n,1 ≤p2 ≤n表示比赛的两人,m1,m2分别是他们出的手势(“rock”,“scissors”,或“paper”)。最后以一个0表示输入结束。


输出



对每个参加者各输出一行,给出他们赢的平均场数,结果保留三位小数。如果赢的平均场数不定,则输出“-”。两测试用例间输出一空行。


样例输入


2 4
1 rock 2 paper
1 scissors 2 paper
1 rock 2 rock
2 rock 1 scissors
2 1
1 rock 2 paper
0


样例输出

0.333
0.667

0.000
1.000


 

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n,m,p1,p2,k,t=0;
double ying[1000];
double shu[1000];
char a[100],b[100];
while(scanf("%d",&n)!=EOF)
{
if(n==0)break;
if(t)
{
printf("\n");
}
t++;
scanf("%d",&k);
memset(ying,0,sizeof(ying));
memset(shu,0,sizeof(shu));
for(int i=0;i<k*n*(n-1)/2;i++)
{
scanf("%d %s %d %s",&p1,&a,&p2,&b);
if((a[0]=='r'&&b[0]=='r')||(a[0]=='s'&&b[0]=='s')||(a[0]=='p'&&b[0]=='p'))continue;//r石头,s剪刀,p布
if(a[0]=='r'&&b[0]=='s'||a[0]=='s'&&b[0]=='p'||a[0]=='p'&&b[0]=='r')
{
ying[p1]+=1;shu[p2]+=1;
}
else if(a[0]=='s'&&b[0]=='r'||a[0]=='p'&&b[0]=='s'||a[0]=='r'&&b[0]=='p')
{
ying[p2]++;shu[p1]++;
}

}
for(int i=1;i<=n;i++)
{
double sum=1.0;
if(ying[i]==0&&shu[i]==0)printf("-\n");
else
{

sum=(ying[i]*1.000)/(ying[i]+shu[i])*1.000;
printf("%.3lf\n",sum);
}
}
}
return 0;
}


标签:p2,p1,shu,石头,&&,rock,ying,剪刀
From: https://blog.51cto.com/u_15896805/5897488

相关文章

  • NOIP2015Day2T1-跳石头
    1.跳石头(stone.cpp/c/pas)【问题描述】一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石......
  • 代码随想录day43 | 1049. 最后一块石头的重量 II 494. 目标和 474. 一和零
    1049.最后一块石头的重量II题目|文章思路求剩余石头的最小重量。如果两个石头最接近总重量的平均值,那么剩余石头为最小重量。所以先求出石头的总重量的一半。1.数......
  • OpenJudge 1.7.04 石头剪子布
    04:石头剪子布总时间限制:1000ms内存限制:65536kB描述石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代......
  • 1018 锤子剪刀布(JAVA)
    大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入格式:输......
  • 最后一块石头的重量
    难度:简单题目有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x和 y,且 x<=y。那么粉碎的可能结果......
  • Mediapipe 手势识别:石头、剪刀、布
    参考:Mediapipe手势识别  使用该文章代码时,报错如下:TypeError:create_int():incompatiblefunctionarguments.Thefollowingargumenttypes原因:self.mpHands.Ha......
  • ctfshow新手杯剪刀石头布(session反序列化)
    看到ini_set('session.serialize_handler','php');让我不由自主的想起了session反序列化漏洞的一道题。直接百度会有很多文章这里不多介绍。因此我们的解法就是:1.post一......
  • 1049.last-stone-weight-ii 最后一块石头的重量
    问题描述1049.最后一块石头的重量II解题思路实际上还是一个01背包问题。本质上是在求将数组分成差值最小的两部分之后,这两部分的差值,理解了这一点之后,参照416.分割等和......
  • Python中的石头剪刀布游戏
    Python中的石头剪刀布游戏继续阅读WordPress继续阅读知乎版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明本文链接:https:/......
  • [2015年NOIP提高组] 跳石头
    先用二分法谋定一个数,temp_ans=(L+R)/2;我们假设这个temp_ans,就是所有删除方案中,maxn个最小差值中的最大的那个,即答案:ans。而根据题目要求,我们需要拿掉M个石头。所......