54

问答题 54 /92

德州扑克问题 一副牌中发五张扑克牌给你:让你判断数字的组成:

有以下几种情况:

 1:四条:即四张一样数值的牌(牌均不论花色)2:三条带 一对

 3:三条带两张不相同数值的牌

 4:两对

 5:顺子  包括 10,J,Q,K,A

6:什么都不是

 7:只有一对

编程实现以上功能。

参考答案

#include "stdio.h"
void sort(int data[], int n)
{
    int temp = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (data[i] < data[j])
            {
                temp = data[i];
                data[i] = data[j];
                data[j] = temp;
            }
        }
    }
}
void test(int a[], int len)
{
    int *b = new int[len];
    int count = 0;
    bool temp = false;
    for (int i = 0; i < len; i++)
    {
        b[i] = a[i];
    }
    sort(b, 5);
    for (i = 0; i < len - 1; i++)
    {
        if (b[i] == b[i + 1])
            count++;
    }
    switch (count)
    {
    case 0:
        if (b[0] - b[4] == 4 && b[0] - b[3] == 3 && b[0] - b[2] == 2 && b[0] - b[1] == 1)
        {
            printf("顺子");
        }
        else
            printf("什么都不是");
        break;
    case 1:
        printf("只有一对");
        break;
    case 2:
        for (i = 0; i < 3; i++)
        {
            if (b[i] == b[i + 2])
            {
                printf("三条带两张不相同数值的牌");
                temp = true;
                break;
            }
        }
        if (!temp)
        {
            printf("两对");
        }
        break;
    case 3:
        if (b[1] == b[3])
            printf("四条:即四张一样数值的牌");
        else
            printf("三条带一对");
        break;
    }
}
main()
{
    int a[5] = {3, 3, 3, 3, 12};
    test(a, 5);
    return 0;
}