从属性值表中获取n元素组合

时间:2013-11-15 06:03:38

标签: java algorithm combinations

我的问题是创建算法来接收属性值的n元素组合,我稍后将其与文件中的记录进行比较。我在Java中编码,属性值表表示为LinkedList<链表<字符串[2]> > (当然我可以改变这种表现形式)。 示例表可能如下所示:

(Link) Sample Table

对于一个元素的组合,它足以编写三个嵌套for循环,但是如何处理n =元素的组合?不允许组合相同的属性和相同的属性值。

1 个答案:

答案 0 :(得分:0)

如果你想要n嵌套循环,你可以使用递归。

但是,处理这个问题的简单方法可能就是这样循环:

LinkedList<LinkedList<String>> L;
// Init L

// begin looping
int N = 1;
for(LinkedList<String> l in L)
    N *= l.length;
for(int i = 0; i < N; i++){
    int[] chooseWhich = new int[L.length];
    for(int j = 0; j < L.length; j++){
        chooseWhich[j] = i % L[j].length;
        i /= L[j].length;
    }
    // at this stage, you have the i-th column chosen to be chooseWhich[i]
    // do whatever you want just as you have nested n loops
}

顺便说一句,我刚刚意识到LinkedList没有长度,但是很多人都改变了使用数组。或者你可以自己在某处保持链表的长度。