1018 锤子剪刀布(用C语言精简的解决每日两题)

1018 锤子剪刀布(用C语言精简的解决每日两题)
这题不难,但是为啥代码写这么长?

#include<stdio.h>
#include<stdlib.h>

int main(){
    int n,balance=0;  //balance是平的局数
    char a,b;
    int count[2][3]={0};
    scanf("%d",&n);
    for(int i=0;i<n;i++)  //按B C J的顺序,方便后面“则输出按字母序最小的解”
    {
        scanf(" %c %c",&a,&b);
        if(a=='B'&&b=='C')
            count[0][0]++;
        else if(a=='B'&&b=='J')
            count[1][2]++;
        else if(a=='C'&&b=='J')
            count[0][1]++;
        else if(a=='C'&&b=='B')
            count[1][0]++;
        else if(a=='J'&&b=='B')
            count[0][2]++;
        else if(a=='J'&&b=='C')
            count[1][1]++;
        else
            balance++;
    }
    int temp=count[0][0]+count[0][1]+count[0][2]; //这是a赢的局数,也是b输的局数
    printf("%d %d %d\n",temp,balance,n-temp-balance);
    printf("%d %d %d\n",n-temp-balance,balance,temp);
    int max[2]={-1},maxj[2]={-1}; //不想写更多的变量,干脆就直接两个数组,也方便循环操作
    for(int i=0;i<2;i++){   //去找赢的最多的
        for(int j=0;j<3;j++){
            if(count[i][j]>max[i])
                {
                    max[i]=count[i][j];
                    maxj[i]=j;
                }
        }
    }
    switch(maxj[0]){  //A赢的最多的
        case 0:printf("%c ",'B');break;
        case 1:printf("%c ",'C');break;
        case 2:printf("%c ",'J');break;
    }
    switch(maxj[1]){  //B赢的最多的
        case 0:printf("%c",'B');break;
        case 1:printf("%c",'C');break;
        case 2:printf("%c",'J');break;
    }
return 0;
}

为啥代码这么这么这么长,我不能李姐

上一篇:AcWing 1018. 最低通行费


下一篇:PAT乙级(1018 锤子剪刀布)