xtu 1248 Alice and Bob

2023-12-28 11:42:32

Alice and Bob
题目描述
Alice和Bob在玩骰子游戏,他们用三颗六面的骰子,游戏规则如下:

点数的优先级是1点最大,其次是6,5,4,3,2。
三个骰子点数相同,称为"豹子",豹子之间按点数优先级比较大小。
如果只有两个骰子点数相同,称为"对子",对子之间按点数优先级比较大小。
其他情况称为"点子",点子按点数和比较大小。
豹子比对子、点子大,对子比点子大,如果对子的点数优先级相同,就看剩余那个骰子的点数优先级。
现在给你Alice和Bob投掷骰子的情况,判断一下胜负情况。

输入
第一行输入一个整数K,表示游戏的次数。 以后每两行表示一个样例,第一行是Alice骰子的点数。第二行是Bob骰子的点数。

输出
如果是Alice赢,输出"Alice",如果是Bob赢,输出"Bob",否则输出"Draw"。

样例输入
3
1 1 1
6 6 6
2 1 2
4 5 4
4 5 6
6 5 4
样例输出
Alice
Bob
Draw

AC代码

#include<stdio.h> 
int Judge(int a[]){//判断所属的情况 
	int flag=1;
	if(a[0]==a[1]&&a[0]==a[2]&&a[1]==a[2]){
		flag=2;
	}
	else if(a[0]!=a[1]&&a[0]!=a[2]&&a[1]!=a[2]){
		flag=0;
	}
	return flag;
}
void Compare(int a,int b){//比较大小 
	if(a>b)printf("Alice\n");
	else if(a==b)printf("Draw\n");
	else printf("Bob\n");
}
int Same(int a[]){//找到对子中相等的数 
	int i,j,flag=1,t;
	for(i=0;i<2&&flag;i++){
		for(j=i+1;j<3;j++){
			if(a[i]==a[j]){
				flag=0;
				t=a[i];
				break;
			}
		}
	}
	return t;
}
int main()
{
	int T;
	scanf("%d",&T);
	while(T--){
		int a[4]={};
		int b[4]={};
		int i,j;
		for(i=0;i<3;i++){
			scanf("%d",&a[i]);
			if(a[i]==1)a[i]=7;//1最大,赋值为7 
		}
		for(i=0;i<3;i++){
			scanf("%d",&b[i]);
			if(b[i]==1)b[i]=7;
		}
		int flag1=Judge(a),flag2=Judge(b),sum1=0,sum2=0;
	    if(flag1>flag2)printf("Alice\n");
	    else if(flag1==flag2){
	    	if(flag1==0){
	    	   for(i=0;i<3;i++){
	    	   	 if(a[i]==7)a[i]=1;//加法1最小 
	    	   	 if(b[i]==7)b[i]=1;
	    		 sum1+=a[i];
	    		 sum2+=b[i];
			   }
			   Compare(sum1,sum2);
			}
			else if(flag1==2){
				Compare(a[0],b[0]);
			}
			else{
			   int x=Same(a);
			   int y=Same(b);
			   if(x==y){
			   	  for(i=0;i<3;i++){//找到对子中的另一个数 
			   	  	 if(a[i]!=x){
			   	  		x=a[i];
			   	  		break; 
					 }
				   }
				   for(i=0;i<3;i++){
			   	  	 if(b[i]!=y){
			   	  		y=b[i];
			   	  		break; 
					 }
				   }
			   } 
			   Compare(x,y);
			}
		}
		else printf("Bob\n");
	}
}

解题思路看代码

文章来源:https://blog.csdn.net/m0_75005390/article/details/135262041
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。