我纠结在如何判断B,J,C的大小……想了好多好多情况……但觉得没必要写那么多判断……所以去板蓝根大神的解题思路里发现原来可以这样判断(我脑子不灵光喂……谢谢板神~)我的算法大体思路是借用一个二维数组储存甲和乙每次出的手势(借用ascii码储存),然后直接得出每种情况的个数.加油!
#include<stdio.h>
char jud(int B,int J,int C)
{
int te=0,r=J;
if(J<=C)
{te=1;r=C;}
if(r<=B)te=2;
if(te==0)return 'J';
if(te==1)return 'C';
if(te==2)return 'B';
}
main()
{
char JF,YF;//甲方乙方的ascii;
int res['Z'+1]['Z'+1]={0},n,cnt=0;//甲方为行,乙方为列;
int YF_J,YF_B,YF_C,JF_J,JF_B,JF_C;
scanf("%d",&n);
while(n!=0&&scanf("\n%c %c",&JF,&YF)!=EOF)//\n用来接受上一次循环以及开始循环之前缓存区内的回车
{
res[JF][YF]++;cnt++;if(cnt==n)break;
}
printf("%d %d %d\n",(res['B']['C']+res['J']['B']+res['C']['J']),(res['B']['B']+res['J']['J']+res['C']['C']),(res['B']['J']+res['C']['B']+res['J']['C']));
printf("%d %d %d\n",(res['B']['J']+res['C']['B']+res['J']['C']),(res['B']['B']+res['J']['J']+res['C']['C']),(res['B']['C']+res['J']['B']+res['C']['J']));
YF_J=res['B']['J'];YF_B=res['C']['B'];YF_C=res['J']['C'];
JF_J=res['J']['B'];JF_B=res['B']['C'];JF_C=res['C']['J'];//为了不使判断显得麻烦,直接赋值.
printf("%c",jud(JF_B,JF_J,JF_C));
printf(" %c",jud(YF_B,YF_J,YF_C));
}