PAT B1018 锤子剪刀布

统计胜负平的情况,然后统计胜率最高的手势。
所以需要记录胜出的手势。

1.首先创造一个判胜负的函数,返回1,0,-1 分别代表胜 平 负 。
2.根据胜负的关系,同时记录胜利者的手势,用数组记录。

#include
using namespace std;
int A[3],B[3];
int com(char a,char b)
{
    if(a==b) return 0;
    if(a=='J'&&b=='B') return 1;
    if(a=='B'&&b=='C') return 1;
    if(a=='C'&&b=='J') return 1;
    else return -1;
}
int main()
{
    int n;
    cin >> n;
    getchar();
    char a,b;
    int ping=0;
    for(int i=0;i<n;i++)
    {
        scanf("%c %c",&a,&b);
        if(com(a,b)==0)
        {
            ping++;
            getchar();
            continue;
        }else if(com(a,b)==1)
        {
            if(a=='B') A[0]++;
            if(a=='C') A[1]++;
            if(a=='J') A[2]++;
        }else{
            if(b=='B') B[0]++;
            if(b=='C') B[1]++;
            if(b=='J') B[2]++;
        }
        getchar();
    }
    printf("%d %d %d\n",A[0]+A[1]+A[2],ping,B[0]+B[1]+B[2]);
    printf("%d %d %d\n",B[0]+B[1]+B[2],ping,A[0]+A[1]+A[2]);
    int index=0;
    for(int i=0;i<3;i++)
    {
        if(A[i]>A[index])
        {
            index = i;
        }
    }
    if(index==0) printf("B");
    if(index==1) printf("C");
    if(index==2) printf("J");
    index = 0;
    for(int i=0;i<3;i++)
    {
        if(B[i]>B[index])
        {
            index = i;
        }
    }
    if(index==0) printf(" B");
    if(index==1) printf(" C");
    if(index==2) printf(" J");
    return 0;
}

你可能感兴趣的:(PAT乙级)