骰子游戏 - Ⅱ c++题解

题目来源

【题目描述】

【输入格式】

【输出格式】

【样例】

数据范围与提示

这是一道比较简易()的题

分析一下这道题,大意就是输入两人投出的骰子值,根据题目的规则进行比大小

输入与输出不再赘述,重点是比较的部分

我们可以把比较分为两部分: 花色大小点数大小

有三种花色,那么我们就定义两个变量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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值