微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

给定一手 7 张牌,找出所有 5 张顺子 (C)

如何解决给定一手 7 张牌,找出所有 5 张顺子 (C)

我对 C 编程还很陌生,所以如果我有点不知所措,请告诉我。

我正在尝试编写一个扑克牌评估器。我现在面临的主要挑战是在 7 张牌中找到所有可用的 5 张顺子。我需要所有这些,而不仅仅是最高的一个,是为了以后使用我找到的顺子来搜索它们的同花顺。

这是我到目前为止所得到的:

  1. 定义卡片的结构
typedef struct
{
    short pips; // Could be 1-13
    suit suit; // taken from above enum
} card;
  1. 定义西装的枚举
typedef enum { spades,hearts,clubs,diamonds} suit;
  1. 返回 0 或 1 的方法,用于在给定的手牌中有或没有顺子。 理想情况下,此方法还应将所有直线存储在参数 2D 数组中。
int is_straight(card hand[],card straights[][STRAIGHT]){

    // Sort the hand in ascending order
    qsort(hand,HAND_SIZE,sizeof(card),comp);
    
    int i,j = 1,k = 0;
    int count = 1,res = 0;

    
    while(1){
        for (i = HAND_SIZE - j; i >= 1; i--){
            if ((hand[i].pips - hand[i - 1].pips) == 1){
                count++;
                if (count == STRAIGHT){
                    res =  1;
                    memcpy(straights[k++],&hand[i-1],STRAIGHT*sizeof(card));
                    j++;
                    count = 1;
                    break;
                }
            }
            else
                count = 1;
        }
        if(i < 1) break;
    }
    return res;
}

我遇到的问题是卡片的重复值。比如手上:
[A - spades,2 - Spades,3 - Spades,4 - Spades,5 - Spades,6 - Spades,6 - Hearts]

我得到这个输出

2 of Spades
3 of Spades
4 of Spades
5 of Spades
6 of Spades

2 of Spades
3 of Spades
4 of Spades
5 of Spades
6 of Spades

Ace of Spades
2 of Spades
3 of Spades
4 of Spades
5 of Spades

有没有人对如何解决这个问题有更好的想法?另外,如前所述,如果您认为这对初学者来说太多了,请告诉我。
干杯。

解决方法

我认为这是一个很好的项目,可以练习您的 C 编程技能,这是您熟悉的内容,您可以在其中快速检查输出,而且您似乎已经朝着正确的方向前进。你只需要照顾小事。

目前的问题是,当您找到顺子时,您手上连续memcpy五张牌,这不是您想要的重复值。

我认为处理重复值是这个项目的主要问题。也许你可以尝试不同的方法来解决这个问题?首先检查重复值并为它们分别制作?使用更多代码而不是试图将它们全部放在一个循环中是可以的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?