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;
            }
        }
    
    }
  • 相关阅读:
    Unity Glossary
    Event-Driven Programming: Introduction, Tutorial, History (Stephen Ferg 著)
    2019年11月
    2019年10月
    2019年9月
    LuaFramework 学习
    xLua 学习
    2019年8月
    【原】AFNetworking源码阅读(二)
    【原】AFNetworking源码阅读(一)
  • 原文地址:https://www.cnblogs.com/xuanzo/p/14645324.html
Copyright © 2011-2022 走看看