这题不难,但是为啥代码写这么长?
#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;
}
为啥代码这么这么这么长,我不能李姐