C#获取所有组合(用于纸牌游戏)

时间:2015-12-09 23:54:53

标签: c# get combinations

我正在使用Windows.Forms GUI在C#上创建一个纸牌游戏。我不知道游戏的名称,但规则如下:

(例如,您手中有10张卡) 如果在桌子上是另外10张,或者一张总和等于10(2,3和5; 7和3等等)的卡片,你就可以拿到手中的卡片。

!这只使用数字卡和等于1的Ace。

问题是我不知道桌子的牌数;它是可变的。我如何制作循环(或其他),将所有可能的组合与表格上的卡片(作为字符串)添加到ListBox?

我有一个包含所有牌的字符串数组(例子):

tableCards [0] =“2_of_clubs” tableCards [1] =“ace_of_diamonds” ...

对于输出我只需要ListBox或另一个名为cardsToGet的数组,其中包含所有可能的组合(作为字符串):

手中有10个,桌上有5个,7个,2个和3个的例子: cardsToGet [0] - “5_of_clubs and 2_of_diamonds and 3_of_hearts” cardsToGet [1] - “7_of_hearts和3_of_diamonds” ...

1 个答案:

答案 0 :(得分:0)

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

//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循环遍历所有组合。或者您可以使用递归。当部分和已经大于期望值时,您可以中断循环(或从递归函数返回)以加速它。如果您遇到代码,请随时再次询问(具体代码)。