0

我试图搜索它,但还没有找到明确的答案。我正在尝试编写一个程序,将字符串数组与另一个字符串数组的所有组合进行比较,但这些组合的元素数量与前一个数组相同。为了更好地解释,假设我有两个字符串数组,n = {alpha,beta,gamma,delta,epsilon} 和 r ={beta,gamma,delta}。现在我想做的是,从集合'n'中获取所有组合(每个组合中的三个字符串)并将集合'r'与它们全部进行比较。如果我得到匹配,然后执行一些操作。我知道要获得所有组合,我需要应用公式,

                            nCr = n!/r!(n-r)!   (where 0<=r<=n)

在我的例子中,n = 5,r = 3,总共有 10 种组合。我需要生成所有这些组合(在本例中为 10 个)并将它们与数组“r”进行比较。我还没有一个起点,我不希望得到答案,但对如何实现它有一点了解(可能会递归完成?)会很棒!提前致谢。

4

1 回答 1

0

鉴于您在评论中提供的其他上下文,这就是我的建议。

n变成一个集合以便于查询:

String[] n = {"alpha", "beta", "gamma", "delta", "epsilon"};
Set<String> nset = new HashSet<String>();
nset.addAll(Arrays.asList(n));

现在您可以检查它是否包含r的所有元素:

String[] r = {"beta", "gamma", "delta"};
if (nset.containsAll(Arrays.asList(r))) {
  // do something
}

这可以用多个不同的r数组重复,它比遍历所有可能的n子集并将它们与特定的r进行比较更有效。

于 2013-04-02T00:22:37.357 回答