pat(B) 1018. 锤子剪刀布

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

char Hash[3][3];
int ans[3];

int main()
{
	int n,i,j;
	for(i=0;i<3;i++)
	{
		Hash[i][i]=1;
	}
	Hash[0][1]=0;//甲胜
	Hash[0][2]=2;
	Hash[1][0]=2;
	Hash[1][2]=0;
	Hash[2][0]=0;
	Hash[2][1]=2;
	
	while(scanf("%d",&n)==1)
	{
		getchar();
		memset(ans,0,sizeof(ans));
		int x[3]={0};
		int l[3]={0};
		for(i=0;i<n;i++)
		{
			char c1,c2;
			int a,b;
			scanf("%c%*c%c%*c",&c1,&c2);
			if(c1=='C')
				a=0;
			if(c1=='J')
				a=1;
			if(c1=='B')
				a=2;
			if(c2=='C')
				b=0;
			if(c2=='J')
				b=1;
			if(c2=='B')
				b=2;
			ans[Hash[a][b]]++;
			if(Hash[a][b]==0)
			{
				if(a==0)
					x[0]++;
				if(a==1)
					x[1]++;
				if(a==2)
					x[2]++;
			}
			if(Hash[a][b]==2)
			{
				if(b==0)
					l[0]++;
				if(b==1)
					l[1]++;
				if(b==2)
					l[2]++;
			}
		}
		for(i=0;i<3;i++)
		{
			if(i==2)
				printf("%d\n",ans[i]);
			else
				printf("%d ",ans[i]);
		}
		for(i=2;i>=0;i--)
		{
			if(i==0)
				printf("%d\n",ans[i]);
			else
				printf("%d ",ans[i]);
		}
		int max=-1;
		for(i=0;i<3;i++)
		{
			if(x[i]>max)
			{
				max=x[i];
				j=i;
			}
		}
		if(j==0)
		{
			if(x[2]<max)
				printf("C ");
			else
				printf("B ");
		}
		if(j==1)
		{
			if(x[2]==max)
				printf("B ");
			else if(x[0]==max)
				printf("C ");
			else
				printf("J ");
		}
		if(j==2)
			printf("B ");
		max=-1;
		for(i=0;i<3;i++)
		{
			if(l[i]>max)
			{
				max=l[i];
				j=i;
			}
		}
		if(j==0)
		{
			if(l[2]<max)
				printf("C\n");
			else
				printf("B\n");
		}
		if(j==1)
		{
			if(l[2]==max)
				printf("B\n");
			else if(l[0]==max)
				printf("C\n");
			else
				printf("J\n");
		}
		if(j==2)
			printf("B\n");
	}
	return 0;
}


你可能感兴趣的:(pat)