codeup id 6172 锤子剪刀布

codeup id 6172 锤子剪刀布_第1张图片

/*输入
输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。
输出
输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。
样例输入

10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J

样例输出

5 3 2//甲:胜 平 负
2 3 5//乙:胜 平 负
B B//甲胜出最多手势 乙胜出最多手势
*/

#include
#define Maxsize 100010
using namespace std;
int contract(char a,char b)
{
	if(a=='C'&&b=='J')
	return 1;
	if(a=='J'&&b=='B')
	return 2;
	if(a=='B'&&b=='C')
	return 3;
	if(b=='C'&&a=='J')
	return -1;
	if(b=='J'&&a=='B')
	return -2;
	if(b=='B'&&a=='C')
	return -3;
	if(a==b)
	return 0;
	
}

int max(int c,int j,int b)
{int max=c;
 max=c>j?c:j;
 max=c>b?c:b;
 max=j>c?j:c;
/* 
max=j>b?j:b;
 max=b>c?b:c;
 max=b>j?b:j;*/
 return max;
}
int main()
{
	int N,i,j,k;
	char n_a[Maxsize],n_b[Maxsize];
	while(scanf("%d ",&N)!=EOF)
	{
		if(N>100000||N<=0)
		break;
	 int same,a_c,a_j,a_b,b_c,b_j,b_b,sum_a,sum_b,a_lost,b_lost,pd1,pd2;
	 same=a_c=a_j=a_b=b_c=b_j=b_b=sum_a=sum_b=a_lost=b_lost=0;
	for(i=0;i

输入犯了错误,因为中间有空格隔开两组数据,用scanf(“%c%c”,&n_a[i],&n_b[i]);但会发现将前10装入A数组中,但却将空格装入B数组中。改为scanf(“%c空格%c”,&n_a[i],&n_b[i]);则会每次字符加空格,不可用。则需通过getchar()接收,而getchar()是以回车结束,空格也会结束,需要一个额外getchar()吸收空格。

codeup id 6172 锤子剪刀布_第2张图片

 

最后输出优先输出搞了半天发现想岔了,不用大段判断,只需要和最值比较按照顺序即可。

 

 

 

 

 

 

 
 
 

你可能感兴趣的:(codeup id 6172 锤子剪刀布)