标签:count case int C语言 ++ 1018 printf 精简 balance
这题不难,但是为啥代码写这么长?
#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;
}
为啥代码这么这么这么长,我不能李姐
标签:count,case,int,C语言,++,1018,printf,精简,balance 来源: https://blog.csdn.net/weixin_45828712/article/details/120580473
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。