PTA(Basic Level) 1018:锤子剪刀布(C语言实现)

PTA(Basic Level) 1018:锤子剪刀布(C语言实现)

分析:想了很久,看了很多其他杰作,这个题没有什么捷径,只能尽量优化代码了。

#include <stdio.h>
int win(char a, char b)
{
	if((a=='C'&&b=='J') || (a=='J'&&b=='B') || (a=='B'&&b=='C'))
		return 1;
	return 0;
}
void count(int a[],char b)
{
	if(b == 'C')
		a[0]++;
	else if(b == 'J')
		a[1]++;
	else
		a[2]++;
}
int cmp(int a[],char c[])
{
    int i,max=0;
	for(i=1; i<3; i++)
	{
		if(a[i] > a[max])
			max=i;
		if(a[i] == a[max])//按字典排序
			if(c[i] < c[max])
				max=i;
    }
    return max;
}
int main()
{	
	int n,wina=0,winb=0,i;
	char a,b;
	char C[]={'C','J','B'};
	int A[3]={0},B[3]={0};
	scanf("%d",&n);
	for(i=0; i<n; i++)
	{
        getchar();
		scanf("%c %c",&a,&b);
        if(a==b)
            continue;
		if(win(a,b))//甲赢
		{
			count(A,a);
			wina++;
		}
		else if(!win(a,b))//乙赢
		{
			count(B,b);
			winb++;
		}
	}
	printf("%d %d %d\n",wina,(n-wina-winb),winb);
	printf("%d %d %d\n",winb,(n-wina-winb),wina);
	printf("%c %c",C[cmp(A,C)],C[cmp(B,C)]);
	return 0;
}
发布了5 篇原创文章 · 获赞 0 · 访问量 22

猜你喜欢

转载自blog.csdn.net/LIve1AnD1LeARN/article/details/105032746