pat 乙级 1018 锤子剪刀布

pat 乙级 1018 锤子剪刀布_第1张图片
pat 乙级 1018 锤子剪刀布_第2张图片

解题思路,这题你硬比也可以,用技巧减少比较也可以,总共有九种情况 去掉 都相同的 还有6种,我的想法是这样 把 B C J 转换成了0 1 2,这样我们只要看他们大小就行,如果前面的比后面的小并且只差1,那就是前面的赢了,如果相差2就是后面的赢了,这样就把比较变成了4种。。都可以

c语言版本:

#include
char output(int *jia)
{
	  char c='B';
	 int count=jia['B'];
	 if(count<jia['C'])
	 {
	 	c='C';
		count=jia['C']; 
	 }
	 if(count<jia['J'])
	 {
	 	c='J';
	 }
	return c;
}
int main()
{
	int n,jia_w=0,jia_ping=0,yi_w=0;
	char jia_c,yi_c;
	int  jia[80]={0};
	int yi[80]={0};
	scanf("%d",&n); 
	while(n--)
	{
		scanf(" %c %c",&jia_c,&yi_c);
		if(jia_c==yi_c)
		{
			jia_ping++;
		}
		else
		{
			int jia_i=(jia_c-'A')%9;
			int yi_i=(yi_c-'A')%9;
			if(jia_i>yi_i)
			 if(jia_i-yi_i==1)
			   yi_w++,yi[yi_c]++;
			   else
			   jia_w++,jia[jia_c]++;
			else
			if(jia_i<yi_i)
			if(yi_i-jia_i==1)
			jia_w++,jia[jia_c]++;
			else
			yi_w++,yi[yi_c]++;
		}
		
	 } 
	 printf("%d %d %d\n",jia_w,jia_ping,yi_w);
	 printf("%d %d %d\n",yi_w,jia_ping,jia_w);
	 char c=output(jia);
	 printf("%c ",c);
	 c=output(yi);
	 printf("%c\n",c);	
	return 0;
}

python版本略:大体思路一样 无非再用个字典

你可能感兴趣的:(pat考试,c语言)