計算多局多個人玩剪刀石頭布,每個人的勝率

[心得]

1.本來考慮用平手的狀況來得到輸的次數,但參加的人不只兩個所以還是分開計算輸贏

2.還是很奇妙的測資空行

 

#include <stdio.h>
#include <string.h>

int main()
{
    int n,k,i,j,p1,p2,first=0;
    char m1[10],m2[10];
    int w[101],l[101];
   
    while(scanf("%d",&n))
    {
        if(!n) break;
        else scanf("%d",&k);
        j=k*n*(n-1)/2;
        for(i=1;i<=n;i++)
        {
            w[i]=0;
            l[i]=0;
        }
       
        if(first>0) printf("\n");
       
        for(i=0;i<j;i++)
        {
            scanf("%d %s %d %s",&p1,m1,&p2,m2);
           
            if((m1[0]=='r')&&(m2[0]=='s')) {w[p1]++; l[p2]++;}
            if((m1[0]=='s')&&(m2[0]=='p')) {w[p1]++; l[p2]++;}
            if((m1[0]=='p')&&(m2[0]=='r')) {w[p1]++; l[p2]++;}
            if((m2[0]=='r')&&(m1[0]=='s')) {w[p2]++; l[p1]++;}
            if((m2[0]=='s')&&(m1[0]=='p')) {w[p2]++; l[p1]++;}
            if((m2[0]=='p')&&(m1[0]=='r')) {w[p2]++; l[p1]++;}
        }
       
        for(i=1;i<=n;i++)
        {
            if(w[i]+l[i]==0)
                printf("-\n");
            else
                printf("%.3f\n",(float)w[i]/(w[i]+l[i]));
        }
       
        first++;
    }
        
    return 0;
}

創作者介紹
創作者 RingsACM 的頭像
RingsACM

Ring's ACM

RingsACM 發表在 痞客邦 留言(0) 人氣()