锤子剪刀布

锤子剪刀布

在一场两人的锤子剪刀布游戏中,规则如下:游戏双方同时摆出锤子剪刀布三者之一的手势,如果双方手势一致则平局,否则锤子赢剪刀,剪刀赢布,布赢锤子。
现在Sansa和Arya在一起玩锤子剪刀布,古灵精怪的Arya早就对Sansa的游戏套路知道得一清二楚。玩之前,Arya就已经确定了Sansa在前n轮锤子剪刀布中Sansa分别会出哪些手势。
Arya觉得比赛渐渐变得无聊,但还是决定陪Sansa玩最后一回,以一场很酷的方式赢得这场游戏。她决定n轮只出一种手势,n轮之后就去玩别的。
现在给出Sansa前n轮的手势,假设你是Arya,你会选择哪种手势(锤子,剪刀,布)来保证自己赢的局数比Sansa多?

Input
第1行:测试数据组数t;
接下来依次是这t组数据,对于每一组数据:
第1行:n,n≤105;
第2行:n个数字,中间以空格隔开,数字的范围为{1,2,3},1代表锤子,2代表剪刀,3代表布,这n个数即Sansa的n轮游戏将出的手势;
第3行:空行。

Output
一共t行,第i行对于第i组数据的答案,答案为{0,1,2,3}中的数字。答案为1,2, 3时分别代表Arya出锤子,剪刀,布时可以保证赢局比Sansa多; 答案为0代表Arya出任何一种手势都不能使得赢局超过Sansa。
如果Arya有多种可以赢的手势,则输出数值最小的那个

Sample Input
Original Transformed
2
3
1 2 2

3
1 2 3

2[EOL] 
3[EOL] 
1[SP]2[SP]2[EOL] 
[EOL] 
3[EOL] 
1[SP]2[SP]3[EOL] 
[EOL] 
[EOF] 

Sample Output
Original Transformed
1
0
代码:#include<stdio.h>
int a[100000];
int main()
{
	int Max(int x,int y);
	int Min(int g,int p);
	int d[100];
	int i,q,z,max,v,u,k,t,n,max1,min,min1;
	scanf("%d",&t);
	for(i=0;i<t;i++)
	{
		int c=0,b=0,j=0;
		scanf("%d\n",&n);
		for(z=0;z<n;z++)
		{
			scanf("%d",&a[z]);
			if(a[z]==1) c++;
			if(a[z]==2) j++;
			if(a[z]==3) b++;
		}
		max1=Max(c,b);
		max=Max(max1,j);
		min1=Min(c,b);
		min=Min(min1,j);
		if(max==c)
			v=1;
		else
			if(max==j)
				v=2;
			else
				v=3;
		if(min==c)
			u=1;
		else
			if(min==j)
				u=2;
			else
				u=3;
		if(min==max)
			d[i]=0;
		else
		{
			for(q=1;q<=3;q++)
				if((q-v)!=1&&(v-q)!=2&&(u-q)!=1&&(q-u)!=2)
				{
					d[i]=q;
					break;
				}
		}
	}
	for(k=0;k<t;k++)
		printf("%d\n",d[k]);		
	return 0;
}
int Max(int x,int y)
{
	int h;
	if(x>y) 
		h=x;
	else 
		h=y;
	return h;
}
int Min(int g,int p)
{
	int f;
	if(g<p)
		f=g;
	else
		f=p;
	return f;
}

锤子剪刀布,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。