蓝桥杯——牌型种类

小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

请填写该整数,不要填写任何多余的内容或说明文字。
1,牌型由十三中牌组成,用一个数组a[13]表示;
2.数组的每一个数都不大于4,;
0000000044140,1111111111111类似的都是可求情况;
#include <iostream>
#include <string>
using namespace std;

int A = 0;
int sun(int *a)
{
    int nn=0;
    for(int i=0;i<13;i++)
    {
        nn += a[i];
    }
    if(nn == 13)
    {
        return 1;
    }
    else
        return 0;
    
}

void fun(int *a,int n)
{
    if(n == 13)
    {
        
        
        if(sun(a) == 1)//判断是否为十三种情况
        {
        /*
        for(int i=0;i<14;i++)//输出每种情况
        {
        cout<<a[i];
        }
        cout<<endl;
            */
            A++;
        }
        
    }
    else
    {
        for(int j=0;j<=4;j++)
        {
            a[n] = j;
            
            fun(a,n+1);
        }
    }
}
int main()
{
    int a[13];
    memset(a,0,sizeof(a));
    fun(a,0);
    cout<<A<<endl;
    return 0;
}

 

public class 棋牌种类
{

    static int art[] = new int [13];
    static int count = 0;
    
    
    public static void print()
    {
        for(int i=0;i<13;i++)
        {
            System.out.print(art[i]);
        }
        System.out.println();
    }
    
    public static boolean f()
    {
        int sum = 0;
        for(int i=0;i<13;i++)
        {
            sum += art[i];
        }
        if(sum == 13)
        {
            return true;
        }
        return false;
            
    }
    
    public static void fun(int n)
    {
        if(n == 13)
        {
            if(f())
            {
                count++;
                //print();
            }
            return;
        }
        
        for(int i=0;i<=4;i++)
        {
            art[n] = i;
            fun(n+1);
        }
    }
    
    public static void main(String[] args)
    {
        
        fun(0);
        
        System.out.println(count);
    }

}

 

posted @ 2019-03-09 18:23  池塘之底  阅读(337)  评论(0编辑  收藏  举报