}
if ( pos == 0 ) {// that means current element is less that any in selects, we won't need to consider this elem
remains.remove(0);
continue;
}
else {
int insert_pos = pos-1;
remains.set(0,selects.get(insert_pos));
selects.set(insert_pos, cur);
System.out.print(" an select ---");
print(selects);
return true;
}
}
return false;
}
void selectAll() {
while (selectNext())
;
}
static void print(ArrayList
int sum = 0;
for (int i=0; i< list.size(); i++) {
sum += list.get(i);
System.out.print( " " + list.get(i));
}
System.out.println(" sum:"+sum );
}
public static void main(String[] args) {
NextWeighSum m = new NextWeighSum();
m.init();
m.selectAll();
}
}
这个算法打算在 "货郎问题" 中使用, 货郎问题是选择权值和最小的边集合,试探是否其构成路径. 构成则问题解决,否则试探下一个.