【问题标题】:C# Get all combinations (for card game)C#获取所有组合(用于纸牌游戏)
【发布时间】:2015-12-09 23:54:53
【问题描述】:

我正在使用 Windows.Forms GUI 在 C# 上创建纸牌游戏。我不知道游戏的名字,但规则是这样的:

(例如你手里有10张牌) 如果桌上还有 10 张,或几张总和等于 10 的牌(2、3 和 5 ;7 和 3 等),您就可以从手牌中获得这些牌。

!这仅使用数字卡和等于 1 的 A。

问题是我不知道牌桌的牌数;它是多变的。我怎样才能使 for 循环(或其他东西)将所有可能的组合与桌子上的卡片(作为字符串)添加到 ListBox?

我有一个包含桌子上所有卡片的字符串数组(示例):

tableCards[0] = "2_of_clubs" tableCards[1] = "ace_of_diamonds" ...

对于输出,我只需要 ListBox 或另一个数组,称为 cardsToGet 以及所有可能的组合(作为字符串):

例如手头上的 10 和桌上的 5、7、2 和 3: cardToGet[0] - “5_of_clubs 和 2_of_diamonds 和 3_of_hearts” cardToGet[1] - “7_of_hearts 和 3_of_diamonds” ...

【问题讨论】:

  • 您需要为您的帖子提供更多详细信息。要包括的内容:您尝试过的内容、无效的内容、无效的代码、您期望的结果/输出的准确描述等。
  • 好的,我现在添加了更准确的描述。

标签: c# get combinations


【解决方案1】:

让我们将这个数据结构用于表状态:

//Ace, 2, 3, 3, 3, 5, 7
int[] table = new int[10] { 1, 1, 3, 0, 1, 0, 1, 0, 0, 0 };

结果组合可以由零或一 Ace、零或一 2、零或一或二或三 3、无 4 等组成。您可以通过十个嵌套的 for 循环遍历所有组合。或者您可以使用递归。当部分总和已经大于所需值时,您可以中断循环(或从递归函数返回)以加快速度。如果您对代码感到困惑,请随时再次询问(使用具体代码)。

【讨论】:

    猜你喜欢
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多