HDU 6542 SSY and JLBD (模拟)

这里必须了解什么是十三幺,什么是九莲宝灯。

十三幺,由三种序数牌的1、9牌,七种字牌及其中一对作将牌组成的和牌。不计五门齐、门前清、单钓将、混幺九,自摸加计不求人。

十三幺必然是万、条、筒、风、箭五门齐全,按不重复原则不计五门齐。

九莲宝灯,由一种花色序数牌按1112345678999组成的特定牌型,不能吃、碰、杠牌,见同花色任何一张序数牌即成和牌。不计清一色、门前清、幺九刻,自摸加计不求人。

知道这一点就很好模拟了。

AC代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    map<string,int>mp;//记录这个字符串出现的次数
    map<char,int>mp1;//记录三种牌型数字出现的次数
    map<char,int>c;
    int wo=0;
    string m;
    for(int i=0; i<14; i++)
    {
        cin>>m;
        if(m[0]<='9'&&m[0]>='0')
        {
            mp1[m[0]]++;
            if(mp[m]==0) 
            c[m[0]]++;//这个数有几个牌型
        }//为三种牌型时
        else
        {
            if(mp[m]==0)
             wo++;//记录有几种花色
        }//为七种花色时
        mp[m]++;
    }
    if(wo>=7&&c['9']>=3&&c['1']>=3&&(wo>7||mp1['1']>3||mp1['9']>3))
        cout<<"shisanyao!"<<endl;
    else if(c['9']==1&&c['1']==1&&c['8']==1&&c['2']==1&&mp1['9']>=3&&mp1['1']>=3&&mp1['8']>=1&&mp1['2']>=1)
        cout<<"jiulianbaodeng!"<<endl;
    else
        cout<<"I dont know!"<<endl;
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值