我有k个向量,每个向量包含n个元素。
我需要实现一种以这种方式创建新Vector的算法:
例如:给定
V1: (e1, e2)
V2: (e3)
V3: (e4, e5, e6)
所需的输出将是
newV1: (e1, e3, e4)
newV2: (e1, e3, e5)
newV3: (e1, e3, e6)
newV4: (e2, e3, e4)
等等,直到它以这种方式产生所有可能的组合。
到目前为止,我所做的只是为第一个Vector的每个元素生成第一个组合(它只生成newV1
,newV4
等):
//compute new subclauses
CNFClause expressionNegatedFinal = new CNFClause();
boolean visited = false;
expressionNegated.getSubclauses().get(0).print();
for (Literal l: expressionNegated.getSubclauses().get(0).getLiterals()) {
CNFSubClause scNF = new CNFSubClause();
scNF.getLiterals().add(l);
for (int j=1; j<expressionNegated.getSubclauses().size(); j++) {
for(Literal li: expressionNegated.getSubclauses().get(j).getLiterals()) {
li.setVisited(true);
scNF.getLiterals().add(li);
break;
}
}
expressionNegatedFinal.getSubclauses().add(scNF);
}
我该如何实现?
Edit1:我需要这个能够用于任何大于或等于2的k个向量,并且每个向量中任意n个元素大于或等于1