我的问题是创建算法来接收属性值的n元素组合,我稍后将其与文件中的记录进行比较。我在Java中编码,属性值表表示为LinkedList<链表<字符串[2]> > (当然我可以改变这种表现形式)。 示例表可能如下所示:
对于一个元素的组合,它足以编写三个嵌套for循环,但是如何处理n =元素的组合?不允许组合相同的属性和相同的属性值。
答案 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没有长度,但是很多人都改变了使用数组。或者你可以自己在某处保持链表的长度。