我想多次运行我的功能并获得不同的答案(因为它处理随机数),并从所有可能的答案中获得最小值。但该函数始终返回相同的值。如何更正循环以获得每次不同的答案并找到最小值? 这是我的代码
int n = 0;
KargerMinimumCut karger = new KargerMinimumCut();
ArrayList<Integer> answers = new ArrayList<Integer>();
for(int i = 0; i < 10; i++) {
n = karger.minCut(vertices);
answers.add(n);
}
int min = minimum(answers);
System.out.println("Minimum Number is: " + min);
和最小功能
public static int minimum(ArrayList<Integer> array) {
int min = array.get(0);
for(int i = 1; i < array.size(); i++) {
if(array.get(i) < min)
min = array.get(i);
}
return min;
}
答案 0 :(得分:1)
编辑:
看到你的算法后,你需要这样做。 (顺便说一下,我本来只使用了一个简单的整数2D数组。)
int min = Integer.MAX_VALUE;
KargerMinimumCut karger = new KargerMinimumCut();
for(int i = 0; i < 10; i++) {
int cut = karger.minCut(copyOfVertices(vertices));
System.err.println(cut);
min = Math.min(min,cut);
}
System.out.println("Minimum Number is: " + min);
public ArrayList<ArrayList<Integer>> copyOfVertices(ArrayList<ArrayList<Integer>> vertices) {
ArrayList<ArrayList<Integer>> copy = new ArrayList<ArrayList<Integer>>();
int size = vertices.size();
for (int i=0; i<size; i++) {
int innerSize = vertices.get(i).size();
ArrayList<Integer> row = new ArrayList<Integer>();
for (int j=0; j<innerSize; j++) {
row.add(new Integer(vertices.get(i).get(j)));
}
copy.add(row);
}
return copy;
}