Algorithm 从n个组中查找所有组合大小n

Algorithm 从n个组中查找所有组合大小n,algorithm,combinations,Algorithm,Combinations,我有一个编程问题 给定n组人。 从每组中挑选一个人组成一个新的集合。 如何从集合中找到所有可能的组合 例如:如果我有两组 第一组:A、B人 第2组:人X Y Z 可能的集合是(A,X)(A,Y)(A,Z)(B,X)(B,Y)(B,Z) 谢谢你的帮助和建议 最佳。您正在寻找n组中的最佳。您可以递归地实现这一点: 对于第一组中的每个元素 对于剩余组的每个产品 将元素与产品组合,并将其添加到结果中 Python中的示例实现: def产品(列表,位置=0): 如果位置>>清单(产品([[1,

我有一个编程问题 给定n组人。 从每组中挑选一个人组成一个新的集合。 如何从集合中找到所有可能的组合

例如:如果我有两组 第一组:A、B人 第2组:人X Y Z

可能的集合是(A,X)(A,Y)(A,Z)(B,X)(B,Y)(B,Z)

谢谢你的帮助和建议

最佳。

您正在寻找n组中的最佳。您可以递归地实现这一点:

  • 对于第一组中的每个元素
    • 对于剩余组的每个产品
      • 将元素与产品组合,并将其添加到结果中
Python中的示例实现:

def产品(列表,位置=0):
如果位置>>清单(产品([[1,2,3],[4,5],[6,7,8]]))
[[1, 4, 6], [1, 4, 7], [1, 4, 8], [1, 5, 6], [1, 5, 7], [1, 5, 8], 
[2, 4, 6], [2, 4, 7], [2, 4, 8], [2, 5, 6], [2, 5, 7], [2, 5, 8], 
[3, 4, 6], [3, 4, 7], [3, 4, 8], [3, 5, 6], [3, 5, 7], [3, 5, 8]]

因为问题中没有给出语言约束,所以我用java共享代码。代码还计算两个集合的叉积

import java.util.*;
import java.lang.*;
import java.io.*;


class Combinations
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        System.out.println(prod(Arrays.asList(Arrays.asList("A", "B"), Arrays.asList("X", "Y", "Z"))));
    }

    static <String> List<List<String>> prod(List<List<String>> sets) {
    List<List<String>> res = new ArrayList<List<String>>();
    if (sets.size() == 0) {
        res.add(new ArrayList<String>());
        return res;
    } else {
        List<String> set1 = sets.get(0);
        List<List<String>> adLst = prod(sets.subList(1, sets.size()));
        for (String item : set1) {
            for (List<String> lst : adLst) {
                ArrayList<String> result = new ArrayList<String>();
                result.add(item);
                result.addAll(lst);
                res.add(result);
            }
        }
    }
    return res;
}
}

这不是一个编程问题。。。此外,您是否只寻找尺寸为2的组合?您知道如何手动解决此问题吗?如果是这样的话,试着修改你的问题以包含一个特定的问题。如果不是,首先从那里开始。
static
那么,
String
是类型占位符的名称吗?非常混乱…字符串(java中的数据类型)正是列表中保存的对象的类型。它可以更改为其他数据类型,如IntegerNo,但事实并非如此。对于第一个
,就在
static
之后,您告诉Java,这不是
Java.lang.String
,而是任何数据类型的占位符。不要误解我的意思,使用泛型数据类型是这个方法的一个好主意,但是您绝对不应该调用那个泛型数据类型
。相反,可以使用
或类似的方法,然后使用
列表
等。
[[A, X], [A, Y], [A, Z], [B, X], [B, Y], [B, Z]]