akoj-1222-炸金花

炸金花

Time Limit:1000MS  Memory Limit:65536K
Total Submit:21 Accepted:6

Description

 炸金花是一个风靡全球的扑克游戏,喜欢玩他的人不计其数,不少人因为这个游戏发了家,而更多的人则输得倾家荡产。为了帮助赌徒们戒掉它,安徽科技学院决定派你去写一个程序,帮助赌徒们更好的认识这个游戏。 
  炸金花在这里被简化成这样一个情况:每一个人都会被随机的发到1~13中的任意三张牌,然后比较大小。比较大小的方式是这样的: 
  豹子:即三张一样的牌,同类型的豹子,数字大的更大,豹子大于任何其他情况。 
  顺子:即三张递增的连续的牌,比如(4,5,6),(1,2,3),都是顺子的话,谁的点数大则大,顺子大于对子和单张。 
  对子:即两张一样的牌带一张单牌,比如(1,1,4),(2,2,5),都是对子的话,谁的那一对大则大,如果那一对也一样,则比较单张的大小。对子大于单张。 
  单张:即三张牌不是上述的三种。单张的比较大小方式是,先比较最大的,再比较第二大的,再比较第三大的。 
  你的任务是,对于给定的牌,判断输赢

Input

多组输入,每组输入两行,第一行三个数是你的三张牌,第二行是对手的三张牌 

Output

每组数据输出,若你赢输出you win,否则you lose

Sample Input

9 9 9
7 8 9

Sample Output

you win

Source

[Submit]   [Go Back]   [Status]   [Discuss]

#include<iostream>
#include<algorithm>
using namespace std;
int f(int a[])//判断是什么牌
{
    if(a[0]==a[1]&&a[1]==a[2])return 4;//豹子    //我擦,为什么要先判断豹子和顺子
    if(a[0]+1==a[1]&&a[1]+1==a[2])return 3;//顺子
    if(a[0]!=a[1]&&a[1]!=a[2])return 1;//单张
    return 2;//对子
}
int g(int a[])//判断对子大小
{
    if(a[0]==a[1])return a[0]*100+a[1]*10+a[2];
    else if(a[1]==a[2])return a[2]*100+a[1]*10+a[0];
}
int main()
{
    int a[4]= {0};
    int b[4]= {0};
    while(cin>>a[0]>>a[1]>>a[2]>>b[0]>>b[1]>>b[2])
    {
        sort(a,a+3);
        sort(b,b+3);
        if(f(a)>f(b))cout<<"you win"<<endl;
        else  if(f(a)<f(b))cout<<"you lose"<<endl;
        else if(f(a)==f(b))
        {
            if ( f(a)==4 )a[0]>b[0]?cout<<"you win"<<endl:cout<<"you lose"<<endl;
            else if ( f(a)==2 )g(a)>g(b)?cout<<"you win"<<endl:cout<<"you lose"<<endl;
            else (a[2]*100+a[1]*10+a[0])>(b[2]*100+b[1]*10+b[0])?cout<<"you win"<<endl:cout<<"you lose"<<endl;
        }
    }
    return 0;
}
#include<stdio.h>//老赵参考代码
#include<stdlib.h>
int inc(const void*a,const void*b)
{
    return *(int*)a-*(int*)b;
}

int value(int A[3])
{
    qsort(A,3,4,inc);
    if(A[0]==A[1]&&A[1]==A[2])
        return A[0]*1000000;
    if(A[0]+1==A[1]&&A[1]+1==A[2])
        return A[0]*10000;
    if(A[0]==A[1]||A[1]==A[2])
        return A[1]*100;
    return A[2];
}
int main()
{
    int A[3],B[3];
    while(~scanf("%d%d%d%d%d%d",A,A+1,A+2,B,B+1,B+2))
        puts(value(A)>value(B)?"you win":"you lose");
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值