【题目描述】

【输入格式】

【输出格式】

【样例】

【数据范围与提示】

这是一道比较简易(水)的题
分析一下这道题,大意就是输入两人投出的骰子值,根据题目的规则进行比大小
输入与输出不再赘述,重点是比较的部分
我们可以把比较分为两部分: 花色大小和点数大小
有三种花色,那么我们就定义两个变量h1 和h2来分别表示Alice和Bob的花色:
h1=3表示Alice的花色是三同
h1=2表示Alice的花色是一对
h1=1表示Alice的花色是散点
Bob的也是同样的
点数也是用两个变量d1 d2来存储
是输入,模拟:
cin>>a>>b>>c;//输入点数
if(a==b&&b==c&&a==c){//如果是三同
h1=3;//花色为3
d1=a;//点数为a
}
else{
if(a==b||a==c||b==c){//如果是一对
h1=2;//花色为2
if(a==b) d1=a;//3个if来判断
if(a==c) d1=a;
if(b==c) d1=b;
}
else{//如果是散点
h1=1;//花色为1
d1=max(max(a,b),max(b,c));//点数为最大值
}
}
分别将Alice和bob的值读入、判断之后,进行比较:
if(h1==h2){//如果花色相同,比较点数
if(d1>d2)// 判断
cout<<"Alice"<<endl;
if(d1<d2)//判断
cout<<"Bob"<<endl;
if(d1==d2)//判断
cout<<"Draw"<<endl;
}
else{//如果花色不同,比较花色大小
if(h1>h2)//判断
cout<<"Alice"<<endl;
if(h1<h2)//判断
cout<<"Bob"<<endl;
}
总结 此题为一个简单的模拟,理解题意运用多个if嵌套即可
最后奉上无注释完整代码:
#include<bits/stdc++.h>
using namespace std;
int t,h1,h2,d1,d2,a,b,c;
int main(){
cin>>t;
while(t--){
cin>>a>>b>>c;
if(a==b&&b==c&&a==c){
h1=3;
d1=a;
}
else{
if(a==b||a==c||b==c){
h1=2;
if(a==b) d1=a;
if(a==c) d1=a;
if(b==c) d1=b;
}
else{
h1=1;
d1=max(max(a,b),max(b,c));
}
}
cin>>a>>b>>c;
if(a==b&&b==c&&a==c){
h2=3;
d2=a;
}
else{
if(a==b||a==c||b==c){
h2=2;
if(a==b) d2=a;
if(a==c) d2=a;
if(b==c) d2=b;
}
else{
h2=1;
d2=max(max(a,b),max(b,c));
}
}
if(h1==h2){
if(d1>d2) cout<<"Alice"<<endl;
if(d1<d2) cout<<"Bob"<<endl;
if(d1==d2) cout<<"Draw"<<endl;
}
else{
if(h1>h2) cout<<"Alice"<<endl;
if(h1<h2) cout<<"Bob"<<endl;
}
}
return 0;
}