德州扑克:从52张随机挑选7张,再从7张里面选出最大的组合的所有组合的概率

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
#include<stdlib.h>

char porker_type[133784560][11];


int  Royal_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Straight_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Four_of_a_Kind(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Full_House(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Straight(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Three_of_a_Kind(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Two_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  One_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  No_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Straight_c(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Flush_c(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int Feed_Rank(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_Royal_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_Straight_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_Four_of_a_Kind(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_Full_House(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_Straight(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_Three_of_a_Kind(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_Two_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_One_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  C_No_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r);
int  Max_sevencard(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r, char rank);

void  L_Rank(struct card* info, struct L_Feed_car* bb);
struct card {
    char card1[7][2];
};

struct L_Feed_car {
    char card3[11];
};

int main(void)

{

    int ii, jj, i, j, k, l, m, count = 0;
    int porker[52][2];
    //char** porker_type;
    int  rows = 133784560, cols = 11;

    double Royal = 0, Straight_F = 0, Four = 0, Full_H = 0, Flus = 0, Straigh = 0, Three = 0, Two = 0, One = 0, No = 0;
    struct card info;
    struct L_Feed_car bb;
    //生成52个扑克牌二维数组,第一列表示花色,第二列代表大小。
    for (i = 1; i <= 4; i++)
    {

        for (j = 1; j <= 13; j++)
        {
            if (i == 1)//数组第1列代表花:色黑桃是1
            {
                porker[j - 1][0] = 1;
                porker[j - 1][1] = j + 1;//数组第2列代大小:A是14,K是13,Q是12,J是11
            }
            if (i == 2)//数组第一列代表花:色红桃是2
            {
                porker[j + 12][0] = 2;
                porker[j + 12][1] = j + 1;//数组第2列代大小:A是14,K是13,Q是12,J是11
            }
            if (i == 3)//数组第一列代表花色:草花是3
            {
                porker[j + 25][0] = 3;
                porker[j + 25][1] = j + 1;//数组第2列代大小:A是14,K是13,Q是12,J是11
            }
            if (i == 4)//数组第一列代表花色:方片是4
            {
                porker[j + 38][0] = 4;
                porker[j + 38][1] = j + 1;//数组第2列代大小:A是14,K是13,Q是12,J是11
            }

        }
    }
    /*
    // 分配行指针的内存空间
    porker_type = (char**)malloc(rows * sizeof(char*));
    if (porker_type == NULL) {
        puts("Memory allocation failed. Goodbye.");
        exit(EXIT_FAILURE);
    }
    // 分配列指针的内存空间
    for (i = 0; i < rows; i++) {
        porker_type[i] = (char*)malloc(cols * sizeof(char));
        if (porker_type[i] == NULL) {
            puts("Memory allocation failed. Goodbye.");
            exit(EXIT_FAILURE);
        }
    }
    */
    // 分配每个元素的内存空间

    for (ii = 0; ii < 46; ii++) {
        for (jj = ii + 1; jj < 47; jj++) {
            for (i = jj + 1; i < 48; i++) {
                for (j = i + 1; j < 49; j++) {
                    for (k = j + 1; k < 50; k++) {
                        for (l = k + 1; l < 51; l++) {
                            for (m = l + 1; m < 52; m++) {
                                /*printf("%d: %d-%d %d-%d %d-%d %d-%d %d-%d\n", count, porker[i][0], porker[i][1],
                                    porker[j][0], porker[j][1], porker[k][0], porker[k][1],
                                    porker[l][0], porker[l][1], porker[m][0], porker[m][1]);*/

                                info.card1[0][0] = porker[ii][0]; info.card1[0][1] = porker[ii][1];
                                info.card1[1][0] = porker[jj][0]; info.card1[1][1] = porker[jj][1];
                                info.card1[2][0] = porker[i][0]; info.card1[2][1] = porker[i][1];
                                info.card1[3][0] = porker[j][0]; info.card1[3][1] = porker[j][1];
                                info.card1[4][0] = porker[k][0]; info.card1[4][1] = porker[k][1];
                                info.card1[5][0] = porker[l][0]; info.card1[5][1] = porker[l][1];
                                info.card1[6][0] = porker[m][0]; info.card1[6][1] = porker[m][1];

                                L_Rank(&info, &bb);

                                porker_type[count][0] = bb.card3[0]; porker_type[count][5] = bb.card3[5];
                                porker_type[count][1] = bb.card3[1]; porker_type[count][6] = bb.card3[6];
                                porker_type[count][2] = bb.card3[2]; porker_type[count][7] = bb.card3[7];
                                porker_type[count][3] = bb.card3[3]; porker_type[count][8] = bb.card3[8];
                                porker_type[count][4] = bb.card3[4]; porker_type[count][9] = bb.card3[9]; porker_type[count][10] = bb.card3[10];

                                //printf("%d:  %d %d %d %d %d          %d %d %d %d %d\n", count, porker_type[count][0], porker_type[count][1], porker_type[count][2], porker_type[count][3], porker_type[count][4],
                                    //porker_type[count][5], porker_type[count][6], porker_type[count][7], porker_type[count][8], porker_type[count][9]);

                                if (porker_type[count][10] == 10)
                                {
                                    ++Royal;
                                }
                                else if (porker_type[count][10] == 9)
                                {
                                    ++Straight_F;
                                }
                                else if (porker_type[count][10] == 8)
                                {
                                    ++Four;
                                }
                                else if (porker_type[count][10] == 7)
                                {
                                    ++Full_H;
                                }
                                else if (porker_type[count][10] == 6)
                                {
                                    ++Flus;
                                }
                                else if (porker_type[count][10] == 5)
                                {
                                    ++Straigh;
                                }
                                else if (porker_type[count][10] == 4)
                                {
                                    ++Three;
                                }
                                else if (porker_type[count][10] == 3)
                                {
                                    ++Two;
                                }
                                else if (porker_type[count][10] == 2)
                                {
                                    ++One;
                                }
                                else if (porker_type[count][10] == 1)
                                {
                                    ++No;
                                }
                                printf("%d:  %d %d %d %d %d    %d %d %d %d %d      %d\n", count, porker_type[count][0], porker_type[count][1], porker_type[count][2], porker_type[count][3], porker_type[count][4],
                                    porker_type[count][5], porker_type[count][6], porker_type[count][7], porker_type[count][8], porker_type[count][9], porker_type[count][10]);
                                /*if (count > rows - 2)
                                {
                                    printf("*********到数量了*********\n");
                                    exit(EXIT_FAILURE);
                                }*/
                                ++count;

                            }
                        }
                    }
                }
            }
        }
    }


    // 输出二维数组的值


    printf("%f\n", (double)(Royal + Straight_F + Four + Full_H + Flus + Straigh + Three + Two + One + No));
    printf("************************ \n\n");
    printf("Royal:%0.7f \n Straight_F:%0.7f \n Four:%0.7f \n", Royal / rows, Straight_F / rows, Four / rows);
    printf("Full_H:%0.7f \n Flus:%0.7f \n Straigh:%0.7f \n", Full_H / rows, Flus / rows, Straigh / rows);
    printf("Three:%0.7f \n Two:%0.7f \n One:%0.7f \n No:%0.7f \n", Three / rows, Two / rows, One / rows, No / rows);
    printf("************************ \n\n");

    printf("\n");

    /*
    // 释放分配的内存空间
    for (i = 0; i < rows; i++) {
        free(porker_type[i]);
    }
    free(porker_type);
*/

    return 0;

}

int  Straight_c(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)//是否有顺子
{
    if (g - h == 1 && h - t == 1 && t - r == 1)
    {
        if (f == 14 && g == 5)
            return 5;
        else if (f - g == 1)
            return 5;
        else
            return 0;
    }
    else
        return 0;
}

int  Flush_c(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)//是否有同花
{
    if (a == b && b == c && c == d && d == e)
        return 6;
    else
        return 0;
}


int  Royal_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)//皇家同花顺判断
{

    if (f == 14 && r == 10 && Flush_c(a, b, c, d, e, f, g, h, t, r) == 6 && Straight_c(a, b, c, d, e, f, g, h, t, r) == 5)
        return 10;
    else
        return 0;
}

int  Straight_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)//同花顺判断(非皇家)
{
    if (f != 14 && Flush_c(a, b, c, d, e, f, g, h, t, r) == 6 && Straight_c(a, b, c, d, e, f, g, h, t, r) == 5)
        return 9;
    else
        return 0;
}

int  Four_of_a_Kind(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)//四条判断
{
    if ((f == g && g == h && h == t && t != r) || (f != g && g == h && h == t && t == r))
        return 8;
    else
        return 0;
}

int  Full_House(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)//葫芦判断
{
    if ((f == g && g == h && h != t && t == r) || (f == g && g != h && h == t && t == r))
        return 7;
    else
        return 0;
}
int  Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r) //同花判断(非同花顺)
{
    if (Flush_c(a, b, c, d, e, f, g, h, t, r) == 6 && Straight_c(a, b, c, d, e, f, g, h, t, r) != 5)
        return 6;
    else
        return 0;
}

int  Straight(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if (Flush_c(a, b, c, d, e, f, g, h, t, r) != 6 && Straight_c(a, b, c, d, e, f, g, h, t, r) == 5)
        return 5;
    else
        return 0;
}

int  Three_of_a_Kind(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if ((f == g && g == h && h != t && t != r) || (f != g && g == h && h == t && t != r) || (f != g && g != h && h == t && t == r))
        return 4;
    else
        return 0;
}

int  Two_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if ((f == g && g != h && h == t && t != r) || (f == g && g != h && h != t && t == r) || (f != g && g == h && h != t && t == r))
        return 3;
    else
        return 0;
}
int  One_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if ((f == g && g != h && h != t && t != r) || (f != g && g == h && h != t && t != r) || (f != g && g != h && h == t && t != r) || (f != g && g != h && h != t && t == r))
        return 2;
    else
        return 0;
}
int  No_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    int S;
    S = One_Pair(a, b, c, d, e, f, g, h, t, r) + Two_Pair(a, b, c, d, e, f, g, h, t, r) + Three_of_a_Kind(a, b, c, d, e, f, g, h, t, r) + Straight(a, b, c, d, e, f, g, h, t, r)
        + Flush(a, b, c, d, e, f, g, h, t, r) + Full_House(a, b, c, d, e, f, g, h, t, r) + Four_of_a_Kind(a, b, c, d, e, f, g, h, t, r) + Straight_Flush(a, b, c, d, e, f, g, h, t, r)
        + Royal_Flush(a, b, c, d, e, f, g, h, t, r);
    if (S == 0)
        return 1;
    else
        return 0;
}

int Feed_Rank(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if (Royal_Flush(a, b, c, d, e, f, g, h, t, r))
    {
        return 10;
    }
    else if (Straight_Flush(a, b, c, d, e, f, g, h, t, r))
        return 9;
    else if (Four_of_a_Kind(a, b, c, d, e, f, g, h, t, r))
        return 8;
    else if (Full_House(a, b, c, d, e, f, g, h, t, r))
        return 7;
    else if (Flush(a, b, c, d, e, f, g, h, t, r))
        return 6;
    else if (Straight(a, b, c, d, e, f, g, h, t, r))
        return 5;
    else if (Three_of_a_Kind(a, b, c, d, e, f, g, h, t, r))
        return 4;
    else if (Two_Pair(a, b, c, d, e, f, g, h, t, r))
        return 3;
    else if (One_Pair(a, b, c, d, e, f, g, h, t, r))
        return 2;
    else
        return 1;
}


int  C_Royal_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    return 1;
}
int  C_Straight_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if (a > f)
        return 1;
    else
        return 0;
}
int  C_Four_of_a_Kind(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if ((a > f) || (a == f && e > r))
        return 1;
    else
        return 0;
}
int  C_Full_House(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if ((c > h) || (c == h && a == c && f == h && e > r) || (c == h && e == c && r == h && a > f) || (c == h && a == c && r == h))
        return 1;
    else
        return 0;
}
int  C_Flush(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if ((a > f) || (a == f && b > g) || (a == f && b == g && c > h) || (a == f && b == g && c == h && d > r) || (a == f && b == g && c == h && d == r && e > r))
        return 1;
    else
        return 0;
}
int  C_Straight(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if ((a != 14 && f != 14 && a > f) || (a == 14 && b == 13) || (a != 14 && f == 14 && g == 5))
        return 1;
    else
        return 0;

}
int  C_Three_of_a_Kind(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r)
{
    if (c > h)
    {
        return 1;
    }
    else if (c == h && a == b && b == c)//三顶格
    {
        if (f == g)
        {
            if ((d > t) || (d == t && e > r))
                return 1;
            else
                return 0;
        }
        else if (t == r)
        {
            return 0;
        }
        else if (f == h && h == t)
        {
            return 0;
        }
        else
            return 0;
    }
    else if (c == h && c != a && b == c)//三中间
    {
        if (f == g)
        {
            return 1;
        }
        else if (t == r)
        {
            if (a > f)
                return 1;
            else
                return 0;

        }
        else if (f == h && h == t)
        {
            if (a > f)
                return 1;
            else if (a == f && e > r)
                return 1;
            else
                return 0;
        }
        else if (c == h && c != a && b == c)//三最后
        {
            if (f == g)
            {
                return 1;
            }
            else if (t == r)
            {
                if (a > f)
                    return 1;
                else if (a == f && b > g)
                    return 1;
                else
                    return 0;

            }
            else if (f == h && h == t)
            {
                if (a >= f)
                    return 1;
                else
                    return 0;
            }
            else
                return 0;
        }
        else
            return 0;
    }
    else
        return 0;
}
int  C_Two_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r) {
    if (a != b)//单在第一位
    {
        if (f != g)//单在第一位
        {
            if (b > g)
                return 1;
            else if (b == g && e > r)
                return 1;
            else if (b == g && e == r && a > f)
                return 1;
            else
                return 0;
        }
        else if (g != h && h != r)//单在第三位
        {
            if (b > g)
                return 1;
            else if (b == g && e > r)
                return 1;
            else if (b == g && e == r && a > h)
                return 1;
            else
                return 0;
        }
        else if (t != r)//单在第五位
        {
            if (b > g)
                return 1;
            else if (b == g && e > t)
                return 1;
            else if (b == g && e == r && a > r)
                return 1;
            else
                return 0;
        }
        else
            return 0;
    }
    else if (c != b && c != d)//单在第三位
    {
        if (f != g)//单在第一位
        {
            if (b > g)
                return 1;
            else if (b == g && e > r)
                return 1;
            else if (b == g && e == r && c > h)
                return 1;
            else
                return 0;
        }
        else if (g != h && h != r)//单在第三位
        {
            if (b > g)
                return 1;
            else if (b == g && e > r)
                return 1;
            else if (b == g && e == r && c > h)
                return 1;
            else
                return 0;
        }
        else if (t != r)//单在第五位
        {
            if (b > g)
                return 1;
            else if (b == g && e > t)
                return 1;
            else if (b == g && e == r && c > r)
                return 1;
            else
                return 0;
        }
        else
            return 0;
    }
    else if (d != e)//单在第5位
    {
        if (f != g)//单在第一位
        {
            if (b > g)
                return 1;
            else if (b == g && d > r)
                return 1;
            else if (b == g && d == r && e > f)
                return 1;
            else
                return 0;
        }
        else if (g != h && h != r)//单在第三位
        {
            if (b > g)
                return 1;
            else if (b == g && d > r)
                return 1;
            else if (b == g && d == r && e > h)
                return 1;
            else
                return 0;
        }
        else if (t != r)//单在第五位
        {
            if (b > g)
                return 1;
            else if (b == g && d > t)
                return 1;
            else if (b == g && d == t && e > r)
                return 1;
            else
                return 0;
        }
        else
            return 0;
    }
    else
        return 0;

}
int  C_One_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r) {
    if (a == b)//顶dui XXABC
    {
        if (f == g)//顶dui
        {
            if (a > f)
                return 1;
            else if (a == f && c > h)
                return 1;
            else if (a == f && c == h && d > t)
                return 1;
            else if (a == f && c == h && d == t && e > r)
                return 1;
            else
                return 0;

        }
        else if (g == h)//第二dui
        {
            if (a > g)
                return 1;
            else
                return 0;
        }
        else if (h == t)//第三dui
        {
            if (a > h)
                return 1;
            else
                return 0;
        }
        else if (t == r)//第四dui
        {
            if (a > t)
                return 1;
            else
                return 0;
        }
        else
            return 0;

    }
    else if (b == c)//第二duiA XX B C
    {
        if (f == g)//顶dui
        {
            if (b >= f)
                return 1;
            else
                return 0;

        }
        else if (g == h)//第二dui
        {
            if (b > h)
                return 1;
            else if (b == h && a > f)
                return 1;
            else if (a == h && a == f && d > t)
                return 1;
            else if (b == h && a == f && d == t && e > r)
                return 1;
            else
                return 0;
        }
        else if (h == t)//第三dui
        {
            if (b > h)
                return 1;
            else if (b == h && a > f)
                return 1;
            else
                return 0;
        }
        else if (t == r)//第四dui
        {
            if (b > t)
                return 1;
            else if (b == t && a > f)
                return 1;
            else
                return 0;
        }
        else
            return 0;
    }
    else if (c == d)//第三duiAB XX B 
    {
        if (f == g)//顶dui
        {
            if (c >= f)
                return 1;
            else
                return 0;

        }
        else if (g == h)//第二dui
        {
            if (c > h)
                return 1;
            else if (c == h && a >= f)
                return 1;
            else
                return 0;
        }
        else if (h == t)//第三dui
        {
            if (c > h)
                return 1;
            else if (c == h && a > f)
                return 1;
            else if (c == h && a == f && e > r)
                return 1;
            else
                return 0;
        }
        else if (t == r)//第四dui
        {
            if (c > t)
                return 1;
            else if (c == t && a > f)
                return 1;
            else if (c == t && a == f && b > g)
                return 1;
            else
                return 0;
        }
        else
            return 0;
    }
    else if (c == d)//第四duiABC XX  
    {
        if (f == g)//顶dui
        {
            if (d >= f)
                return 1;
            else
                return 0;

        }
        else if (g == h)//第二dui
        {
            if (d > h)
                return 1;
            else if (d == h && a >= f)/******/
                return 1;
            else
                return 0;
        }
        else if (h == t)//第三dui
        {
            if (d > h)
                return 1;
            else if (d == h && a > f)
                return 1;
            else if (c == h && a == f && e >= r)
                return 1;
            else
                return 0;
        }
        else if (t == r)//第四dui
        {
            if (d > t)
                return 1;
            else if (d == t && a > f)
                return 1;
            else if (d == t && a == f && b > g)
                return 1;
            else if (d == t && a == f && b == g && c > h)
                return 1;
            else
                return 0;
        }
        else
            return 0;
    }
    else
        return 0;

}
int  C_No_Pair(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r) {
    if (a > f)
        return 1;
    else if (a == f && b > g)
        return 1;
    else if (a == f && b == g && c > h)
        return 1;
    else if (a == f && b == g && c == g && d > t)
        return 1;
    else if (a == f && b == g && c == g && d == t && e > r)
        return 1;
    else
        return 0;
}

int  Max_sevencard(char a, char b, char c, char d, char e, char f, char g, char h, char t, char r, char rank) {
    if (rank == 10)
        return C_Royal_Flush(a, b, c, d, e, f, g, h, t, r);
    else if (rank == 9)
        return  C_Straight_Flush(a, b, c, d, e, f, g, h, t, r);
    else if (rank == 8)
        return C_Four_of_a_Kind(a, b, c, d, e, f, g, h, t, r);
    else if (rank == 7)
        return  C_Full_House(a, b, c, d, e, f, g, h, t, r);
    else if (rank == 6)
        return C_Flush(a, b, c, d, e, f, g, h, t, r);
    else if (rank == 5)
        return C_Straight(a, b, c, d, e, f, g, h, t, r);
    else if (rank == 4)
        return C_Three_of_a_Kind(a, b, c, d, e, f, g, h, t, r);
    else if (rank == 3)
        return C_Two_Pair(a, b, c, d, e, f, g, h, t, r);
    else if (rank == 2)
        return C_One_Pair(a, b, c, d, e, f, g, h, t, r);
    else if (rank == 1)
        return C_No_Pair(a, b, c, d, e, f, g, h, t, r);
    else
        return 0;
}


void  L_Rank(struct card* info, struct L_Feed_car* bb)
{
    int i, j, k, l, m, count = 0;
    int x, y, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11;
    char card2[21][11];

    for (i = 0; i < 3; i++)
        for (j = i + 1; j < 4; j++)
            for (k = j + 1; k < 5; k++)
                for (l = k + 1; l < 6; l++)
                    for (m = l + 1; m < 7; m++)
                    {
                        card2[count][0] = info->card1[i][0]; card2[count][5] = info->card1[i][1];
                        card2[count][1] = info->card1[j][0]; card2[count][6] = info->card1[j][1];
                        card2[count][2] = info->card1[k][0]; card2[count][7] = info->card1[k][1];
                        card2[count][3] = info->card1[l][0]; card2[count][8] = info->card1[l][1];
                        card2[count][4] = info->card1[m][0]; card2[count][9] = info->card1[m][1];

                        for (x = 0; x < 5 - 1; x++)
                        {
                            for (y = 5; y < 10 - 1 - x; y++)
                            {
                                if (card2[count][y] < card2[count][y + 1])
                                {
                                    t1 = card2[count][y];
                                    t2 = card2[count][y - 5];
                                    card2[count][y] = card2[count][y + 1];
                                    card2[count][y - 5] = card2[count][y + 1 - 5];
                                    card2[count][y + 1] = t1;
                                    card2[count][y + 1 - 5] = t2;
                                }
                            }
                        }

                        card2[count][10] = Feed_Rank(card2[count][0], card2[count][1], card2[count][2], card2[count][3], card2[count][4], card2[count][5],
                            card2[count][6], card2[count][7], card2[count][8], card2[count][9]);

                        ++count;
                    }

    for (x = 0; x < 21 - 1; x++)
    {
        for (y = 0; y < 21 - 1 - x; y++)
        {
            if (card2[y][10] < card2[y + 1][10])
            {
                t1 = card2[y][10];
                t2 = card2[y][9];
                t3 = card2[y][8];
                t4 = card2[y][7];
                t5 = card2[y][6];
                t6 = card2[y][5];
                t7 = card2[y][4];
                t8 = card2[y][3];
                t9 = card2[y][2];
                t10 = card2[y][1];
                t11 = card2[y][0];


                card2[y][10] = card2[y + 1][10];
                card2[y][9] = card2[y + 1][9];
                card2[y][8] = card2[y + 1][8];
                card2[y][7] = card2[y + 1][7];
                card2[y][6] = card2[y + 1][6];
                card2[y][5] = card2[y + 1][5];
                card2[y][4] = card2[y + 1][4];
                card2[y][3] = card2[y + 1][3];
                card2[y][2] = card2[y + 1][2];
                card2[y][1] = card2[y + 1][1];
                card2[y][0] = card2[y + 1][0];

                card2[y + 1][10] = t1;
                card2[y + 1][9] = t2;
                card2[y + 1][8] = t3;
                card2[y + 1][7] = t4;
                card2[y + 1][6] = t5;
                card2[y + 1][5] = t6;
                card2[y + 1][4] = t7;
                card2[y + 1][3] = t8;
                card2[y + 1][2] = t9;
                card2[y + 1][1] = t10;
                card2[y + 1][0] = t11;
            }
        }
    }

    for (i = 0; i < 21 - 1; i++)
    {
        if (card2[i][10] != card2[i + 1][10])
        {
            t1 = i;
            break;
        }
    }
    if (t1 == 0)
    {
        for (j = 0; j < 11; j++)
            bb->card3[j] = card2[t1][j];

    }
    else
    {
        for (i = 0; i < t1; i++)
            if (Max_sevencard(card2[i][5], card2[i][6], card2[i][7], card2[i][8], card2[i][9], card2[i + 1][5],
                card2[i + 1][6], card2[i + 1][7], card2[i + 1][8], card2[i + 1][9], card2[i][10]))
            {
                for (j = 0; j < 11; j++)
                    card2[i + 1][j] = card2[i][j];
            }

        for (j = 0; j < 11; j++)
            bb->card3[j] = card2[t1][j];

    }

}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当查找德州扑克7牌的最大牌型时,可以使用组合和判断的方法。以下是一个简单的Java代码示例,用于查找最大牌型: ```java import java.util.ArrayList; import java.util.Collections; import java.util.List; public class TexasHoldemPoker { public static void main(String[] args) { List<Card> hand = new ArrayList<>(); hand.add(new Card("Spades", "A")); hand.add(new Card("Hearts", "K")); hand.add(new Card("Diamonds", "Q")); hand.add(new Card("Spades", "J")); hand.add(new Card("Spades", "10")); hand.add(new Card("Clubs", "9")); hand.add(new Card("Spades", "2")); PokerHandType maxHandType = findMaxHandType(hand); System.out.println("Max Hand Type: " + maxHandType); } public static PokerHandType findMaxHandType(List<Card> hand) { List<List<Card>> combinations = generateCombinations(hand, 5); // 生成所有可能的5牌的组合 PokerHandType maxHandType = PokerHandType.HIGH_CARD; for (List<Card> combination : combinations) { PokerHandType handType = evaluateHand(combination); if (handType.compareTo(maxHandType) > 0) { maxHandType = handType; } } return maxHandType; } public static PokerHandType evaluateHand(List<Card> hand) { Collections.sort(hand); if (isRoyalFlush(hand)) { return PokerHandType.ROYAL_FLUSH; } if (isStraightFlush(hand)) { return PokerHandType.STRAIGHT_FLUSH; } if (isFourOfAKind(hand)) { return PokerHandType.FOUR_OF_A_KIND; } // Check for other hand types... return PokerHandType.HIGH_CARD; } // Check if the hand is a Royal Flush (A, K, Q, J, 10 of the same suit) public static boolean isRoyalFlush(List<Card> hand) { return isStraightFlush(hand) && hand.get(0).getValue().equals("A"); } // Check if the hand is a Straight Flush (five consecutive cards of the same suit) public static boolean isStraightFlush(List<Card> hand) { return isStraight(hand) && isFlush(hand); } // Check if the hand is a Four of a Kind (four cards of the same rank) public static boolean isFourOfAKind(List<Card> hand) { for (int i = 0; i <= hand.size() - 4; i++) { if (hand.get(i).getValue().equals(hand.get(i + 3).getValue())) { return true; } } return false; } // Check if the hand is a Straight (five consecutive cards) public static boolean isStraight(List<Card> hand) { for (int i = 0; i < hand.size() - 1; i++) { if (hand.get(i).getRank() != hand.get(i + 1).getRank() - 1) { return false; } } return true; } // Check if the hand is a Flush (all cards of the same suit) public static boolean isFlush(List<Card> hand) { String suit = hand.get(0).getSuit(); for (int i = 1; i < hand.size(); i++) { if (!hand.get(i).getSuit().equals(suit)) { return false; } } return true; } // Generate all possible combinations of k elements from the given list public static List<List<Card>> generateCombinations(List<Card> cards, int k) { List<List<Card>> combinations = new ArrayList<>(); generateCombinationsHelper(cards, k, 0, new ArrayList<>(), combinations); return combinations; } private static void generateCombinationsHelper(List<Card> cards, int k, int start, List<Card> currentCombination, List<List<Card>> combinations) { if (k == 0) { combinations.add(new ArrayList<>(currentCombination)); return; } for (int i = start; i <= cards.size() - k; i++) { currentCombination.add(cards.get(i)); generateCombinationsHelper(cards, k - 1, i + 1, currentCombination, combinations); currentCombination.remove(currentCombination.size() - 1); } } } class Card implements Comparable<Card> { private String suit; private String value; public Card(String suit, String value) { this.suit = suit; this.value = value; } public String getSuit() { return suit; } public String getValue() { return value; } public int getRank() { if (value.equals("A")) { return 14; // Ace is the highest rank } else if (value.equals("K")) { return 13; } else if (value.equals("Q")) { return 12; } else if (value.equals("J")) { return 11; } else if (value.equals("10")) { return 10; } else { return Integer.parseInt(value); } } @Override public int compareTo(Card other) { return Integer.compare(this.getRank(), other.getRank()); } } enum PokerHandType { ROYAL_FLUSH, STRAIGHT_FLUSH, FOUR_OF_A_KIND, // Add other hand types as needed... HIGH_CARD } ``` 这段代码实现了查找德州扑克7牌的最大牌型。它使用了组合算法来生成所有可能的5牌的组合,并依次判断每个组合的牌型,找出最大的牌型。你可以根据需要在`evaluateHand`方法中添加其他牌型的判断逻辑,或者修改`Card`类中的牌面值和花色,以及`PokerHandType`枚举类中的牌型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值