zoukankan      html  css  js  c++  java
  • 2021昆明站K-Riichi!!(麻将)

    代码:

    #include<bits/stdc++.h>
    
    using namespace std;
    int num[40],num2[40];
    bool check1(){//判断去掉雀门后是否胡牌
        for(int i=1;i<=9;i++){
            if(num2[i]%3){
                int x=num2[i]%3;
                if(i+2<=9&&num2[i+1]>=x&&num2[i+2]>=x){
                    num2[i]-=x;
                    num2[i+1]-=x;
                    num2[i+2]-=x;
                }else{
                    return 0;
                }
            }
        }
        for(int i=10;i<=18;i++){
            if(num2[i]%3){
                int x=num2[i]%3;
                if(i+2<=18&&num2[i+1]>=x&&num2[i+2]>=x){
                    num2[i]-=x;
                    num2[i+1]-=x;
                    num2[i+2]-=x;
                }else{
                    return 0;
                }
            }
        }
        for(int i=19;i<=27;i++){
            if(num2[i]%3){
                int x=num2[i]%3;
                if(i+2<=27&&num2[i+1]>=x&&num2[i+2]>=x){
                    num2[i]-=x;
                    num2[i+1]-=x;
                    num2[i+2]-=x;
                }else{
                    return 0;
                }
            }
        }
        for(int i=28;i<=34;i++){
            if(num2[i]%3){
                return 0;
            }
        }
        return 1;
    }
    bool check(){//判断是否胡牌
        for(int i=1;i<=34;i++){
            if(num[i]>=2){
                for(int j=1;j<=34;j++){
                    num2[j]=num[j];
                }
                num2[i]-=2;
                if(check1()){//胡牌
                    return 1;
                }
            }
        }
        return 0;
    }
    int cnt=0;
    string name(int i){
        string s;
        if(i<=9){
            s+='0'+i;
            s+='w';
        }else{
            if(i<=18){
                s+='0'+i-9;
                s+='b';
            }else{
                if(i<=27){
                    s+='0'+i-18;
                    s+='s';
                }else{
                    s+='0'+i-27;
                    s+='z';
                }
            }
        }
        return s;
    }
    int main(){
        int n;
        cin>>n;
        while(n--){
            memset(num,0,sizeof(num));
            string s;
            cin>>s;
            for(int i=0;i<28;i+=2){
                if(s[i+1]=='w'){
                    num[s[i]-'0']++;
                }
                if(s[i+1]=='b'){
                    num[s[i]-'0'+9]++;
                }
                if(s[i+1]=='s'){
                    num[s[i]-'0'+18]++;
                }
                if(s[i+1]=='z'){
                    num[s[i]-'0'+27]++;
                }
            }
            //for(int i=1;i<=34;i++){
            //    cout<<num[i]<<endl;
            //}
            if(check()){
                cout<<"Tsumo!"<<endl;
                continue;
            }
            int cnt=0;
            vector<int> ans[15];
            for(int i=1;i<=34;i++){
                if(num[i]){
                    bool flag=0;
                    num[i]--;
                    for(int j=1;j<=34;j++){
                        num[j]++;
                        if(check()){
                            flag=1;
                            ans[cnt].push_back(j);
                        }
                        num[j]--;
                    }
                    if(flag){
                        ans[cnt].push_back(i);
                        cnt++;
                    }
                    num[i]++;
                }
            }
            cout<<cnt<<endl;
            for(int i=0;i<cnt;i++){
                cout<<name(ans[i][ans[i].size()-1])<<' ';
                for(int j=0;j<ans[i].size()-1;j++)
                    cout<<name(ans[i][j]);
                cout<<endl;
            }
        }
    
    }
  • 相关阅读:
    charles使用教程指南
    根域名服务器 根服务器一般指根域名服务器 (DNS)
    DNS原理及其解析过程【精彩剖析】
    代理工具Charles使用
    cisco 为每个单独的人员设置不同的用户名和密码
    大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合
    KAFKA分布式消息系统
    Android 监听屏幕锁屏,用户解锁
    如何判断微信内置浏览器
    Android,iOS,浏览器打开手机QQ与指定用户聊天界面
  • 原文地址:https://www.cnblogs.com/xuanzo/p/14645324.html
Copyright © 2011-2022 走看看