思路:注意是两个测试输出之间有空行,而不是每测试后加一个空行,还有当w=l=0时会输出“-”;
代码如下:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <vector>
using namespace std;
struct
{
int win;
int lost;
}p[110];
int main()
{
int n,time;
int p1,p2;
char s1[10],s2[10];
int i;
int k=1;
while(scanf("%d",&n) && n)
{
scanf("%d",&time);
for(i=0;i<111;i++)
{
p[i].lost=0;
p[i].win=0;
}
while(time--)
{
scanf("%d %s %d %s",&p1,s1,&p2,s2);
if(strcmp(s1,"rock")==0 && strcmp(s2,"scissors")==0)
{
p[p1].win++;
p[p2].lost++;
}
else if(strcmp(s1,"scissors")==0 && strcmp(s2,"paper")==0)
{
p[p1].win++;
p[p2].lost++;
}
else if(strcmp(s1,"paper")==0 && strcmp(s2,"rock")==0)
{
p[p1].win++;
p[p2].lost++;
}
else if(strcmp(s1,s2)==0);
else
{
p[p1].lost++;
p[p2].win++;
}
}
if(k!=1)
printf("\n");
k--;
for(i=1;i<=n;i++)
{
if(p[i].lost==p[i].win && p[i].win==0)
printf("-\n");
else
printf("%.3lf\n",(double)(p[i].win)/(double)(p[i].win+p[i].lost));
}
}
return 0;
}