Rock-Paper-Scissors Tournament
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2178 Accepted Submission(s): 693

Problem Description
Rock-Paper-Scissors is game for two players, A and B, who each choose, independently of the other, one of rock, paper, or scissors. A player chosing paper wins over a player chosing rock; a player chosing scissors wins over a player chosing paper; a player chosing rock wins over a player chosing scissors. A player chosing the same thing as the other player neither wins nor loses.
A tournament has been organized in which each of n players plays k rock-scissors-paper games with each of the other players - k games in total. Your job is to compute the win average for each player, defined as w / (w + l) where w is the number of games won, and l is the number of games lost, by the player.

Input
Input consists of several test cases. The first line of input for each case contains 1 ≤ n ≤ 100 1 ≤ k ≤ 100 as defined above. For each game, a line follows containing p1, m1, p2, m2. 1 ≤ p1 ≤ n and 1 ≤ p2 ≤ n are distinct integers identifying two players; m1 and m2 are their respective moves ("rock", "scissors", or "paper"). A line containing 0 follows the last test case.

Output
Output one line each for player 1, player 2, and so on, through player n, giving the player's win average rounded to three decimal places. If the win average is undefined, output "-". Output an empty line between cases.

Sample Input
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

Sample Output
0.333
0.667

0.000
1.000

#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
#include<algorithm>
#include<cmath>
#include<set>
#include<map>
#include<vector>
#include<fstream>
#include<sstream>
#include<iomanip>
#include <sstream>
using namespace std; const int N=; int player[N][]; // player[i][0]: win , player[i][1]: lose. int n,k;
short judge(string a, string b)
{
if(a == b)
{
return ;
}
short result;
if(a == "rock")
{
if(b == "scissors")
{
result = ;
}
else if(b == "paper")
{
result = -;
}
}
else if(a == "scissors")
{
if(b == "rock")
{
result = -;
}
else if(b == "paper")
{
result = ;
}
}
else
{
if(b == "scissors")
{
result = -;
}
else if(b == "rock")
{
result = ;
}
}
return result;
}
int main()
{
short ans;
string sa,sb;
int pa,pb;
bool first = true;
while(cin>>n && n)
{
if(!first)putchar('\n');
if(first)first=false;
memset(player,,sizeof(player));
cin>>k;
while(k--)
{
cin>>pa>>sa>>pb>>sb;
ans = judge(sa,sb);
if(ans)
{
if(ans==)//win
{
player[pa][]++;
player[pb][]++;
}
else//lose
{
player[pb][]++;
player[pa][]++;
}
}
}
for(int i=; i<=n; i++)
{
int total = player[i][]+player[i][];
if(total>)
{
printf("%.3f\n",((float)player[i][])/total);
}
else
{
printf("-\n");
}
}
}
return ;
}

最新文章

  1. poj2060Taxi Cab Scheme(二分图匹配)
  2. 用DzzOffice管理阿里云OSS
  3. 闭包在python中的应用,translate和maketrans方法详解
  4. 完成端口(IOCP)怎么判断某个连接是否断开
  5. ?Object-C获取手机设备信息
  6. CentOS 6.5 IP 设置
  7. GCTF2017部分write up
  8. SQL注入-攻入Apple ID钓鱼网站实录
  9. FS BPM 业余研发(用户详细操作手册--单人串行/并行)之 深圳分公司技术部请假审批流程
  10. Problem E
  11. 使用superMap实现点标注和区域着色
  12. django2.0升级日记
  13. oauth2.0通过JdbcClientDetailsService从数据库读取相应的配置
  14. SSH框架新线程下执行数据库持久化时 No Session found for current thread
  15. 8.装饰模式(Decorator Pattern)
  16. 2018-2019-2 网络对抗技术 20165318 Exp6 信息搜集与漏洞扫描
  17. spring security 获取当前用户信息
  18. SQLite之C#连接SQLite
  19. Sencha extjs 的安装
  20. Linux load average负载量分析与解决思路

热门文章

  1. PostgreSQL中COUNT的各条件下(1亿条数据)例子
  2. 与你相遇好幸运,Sail.js新建模型控制器
  3. xml解析方法总结
  4. vim配置方法
  5. web magic 小结
  6. 使用windows的远程桌面连接连接Ubuntu
  7. Printf()输出格式控制(转)
  8. Get open Popups
  9. ios二维码扫描
  10. slide.js使用文档