zoukankan      html  css  js  c++  java
  • HDU

    题目大意:和hdu4431差不多

    就是胡的方法只有hdu4431的第一种

    然后sbc,scmp这些表示牌的字符不同

    要注意的还有输出牌的顺序(s,b,c)

    AC代码

    #include<bits/stdc++.h>
    using namespace std;
    int T,n,i,j,ans,answer[1000];
    string str;
    int have[100];
    int sum[100],t;
    int num(string str)
    {
        int t=str[0]-'1';
        if(str[1]=='s')t+=0;
        else if(str[1]=='b')t+=9;
        else if(str[1]=='c')t+=18;
        return t;
    }
    bool ok4X3()
    {
        int ret=0,tmp[35];
        for(int i=0; i<27; i++)tmp[i]=sum[i];
        for(int i=0; i<=18; i+=9)
            for(int j=0; j<9; j++)
            {
                if(tmp[i+j]>=3)tmp[i+j]-=3,ret++;
                while(j+2<9&&tmp[i+j]&&tmp[i+j+1]&&tmp[i+j+2])tmp[i+j]--,tmp[i+j+1]--,tmp[i+j+2]--,ret++;
            }
        if(ret==4)return true;
        return false;
    }
    bool ok1()
    {
        for(int i=0; i<27; i++)
        {
            if(sum[i]>=2)
            {
                sum[i]-=2;
                if(ok4X3()){sum[i]+=2;return true;}
                sum[i]+=2;
            }
        }
        return false;
    }
    
    bool ok()
    {
        for (int i=0;i<=26;i++)if(sum[i]>4)return false;
        if(ok1())return true;
        return false;
    }
    int main()
    {
        scanf("%d",&T);
        while (T--)
        {
            t++;
            memset(sum,0,sizeof(sum));
            memset(answer,0,sizeof(answer));
            ans=0;
            for (i=1; i<=13; i++)cin>>str,have[i]=num(str),sum[have[i]]++;
            for (i=0; i<=26; i++)
            {
                have[14]=i;
                sum[have[14]]++;
                if(ok())
                {
                    ans++;
                    answer[ans]=i;
                }
                sum[have[14]]--;
            }
            printf("Case %d:",t);
            if(ans)
            {
                for (i=1; i<=ans; i++)
                {
                    printf(" %d",(answer[i]%9)+1);
                    if(answer[i]/9==0)printf("s");
                    else if(answer[i]/9==1)printf("b");
                    else if(answer[i]/9==2)printf("c");
                }
                puts("");
            }
            else puts(" None");
        }
        return 0;
    }
  • 相关阅读:
    日期格式
    v-model修饰符
    从0到1构建全栈知识体系
    Element组件,v-for循环,表单验证方法
    上传文件转换为base64图片
    gulp4进阶
    gulp4快速入门
    TS-接口
    webpack4.0高级
    webpack4.0基础
  • 原文地址:https://www.cnblogs.com/Orange-User/p/7797224.html
Copyright © 2011-2022 走看看