我有点困惑为什么会这样。如果答案很明显,我很抱歉,我对 Java 还是很陌生。
所以我认为我已经设置了我的int[] returning
,所以它只在我选择更新时更新,但由于某种原因,它每次temp[]
更改时都会更新。这是代码。请随时询问某些不清楚的事情,以便我可以帮助您帮助我。
public int[] generateTable(Graph g, int index, int cap, int[] current, int[] edges, int count) {
int truthAmount = 0;
int result = Integer.MAX_VALUE;
int[] temp = new int[count];
int k = 0;
int[] returning = new int[count];
for(int i = 0; i < Math.pow(2, count); i++){
for(int j = count-1; j>=0; j--){
int num = (i/(int) Math.pow(2, j))%2;
temp[k] = num;
if(temp[k] == 0)
truthAmount++;
k++;
}
if(truthAmount >= cap){
result = FFAHelper(g, temp, edges);
if(result < min){
min = result;
returning = temp;
}
}
k = 0;
truthAmount = 0;
}
return returning;
}
它基本上做的是生成一个二进制表,其中 0 代表真,1 代表假。如果真数至少是上限的数量,它只会继续执行 FFAHelper 方法(这都是针对图形/边类的,我知道这不是图形/边类的传统设置,但是我不得不同意这样做)所以基本上它不会继续到 FFAHelper 如果没有truthAmount 至少是边缘的数量。同样,问题是returning
即使它没有通过 if 条件,它也会更新。感谢大家的帮助和时间!