Vol*_*ort 5 java recursion combinations
我有一组Card实例.
Card[] allCards;
Run Code Online (Sandbox Code Playgroud)
我应该在以下条件下获得这些卡的所有可能组合:
出于大学目的,我不应该使用任何能够更轻松地完成这项工作的花哨库.
我确实已经完成了它,但考虑到没有限制,我通常会做的算法不起作用.
这几乎是他们在这里要求的python:找到所有可能的组合
有任何想法吗?我不想要代码或任何东西 - 我只是迷失了算法/想法.
我的问题(更详细)
我可以通过制作两个循环(一个在另一个循环中)来制作对.我可以通过三个循环(一个在另一个在另一个内)来制作三元组.
但我不知道如何解决这个具体问题,因为:
我可以找到一些组合,但不是动态的.
纸笔练习:
让我们先暂时离开 Java 语法。以 5 张牌为例,从 A 到方块 10。现在列出所有可能的配对。(提示:共有 10 个)
现在使用您的对列表,列出每个可能的三元组。
现在使用三元组列表,列出 4 的每种可能的组合。
现在我们来编码:
由于您在编译时不知道组合的最大长度,因此使用循环无法解决问题。另一方面,这个问题本身就需要递归。首先,假设我们有一个Card[][] getCombinations(Card[] cards)返回卡片数组数组的函数。所以如果我们打电话
Card[] cards = new Card[15];
// initialize individual Card objects
Card[][] combinations = getCombinations(cards);
Run Code Online (Sandbox Code Playgroud)
combinations[i]包含生成的组合之一。
现在,为了让事情变得简单,我们假设getCombinations()只返回对。如何使用这些对来创建所有可能的三元组?