基于蛮力搜索的java子问题
我是编程新手,在一项必须完成的任务中苦苦挣扎:
我们必须从用户用其值填充的数组中找到最佳子集和,它与pi最接近。此外,我们必须显示最佳和的元素(例如:Array={1,2,3},best subset sum=3,{1,2})
这就是我现在正在努力解决的问题(显示元素),我真的尝试了一切,但没有任何线索。。。有人有主意吗
谢谢你们
double pi = Math.PI;
int laenge = zahlen.length; //Length of the Array, with my saved elements from the user
double summe = 0;
int n = (1 << laenge); // All possible sums (2^n)
double teilmenge[] = new double[n]; //Array which contains all possible sums
double s1 = Math.abs(teilmenge[0]-pi); //measuring distance with math.abs
double s2; // var for comparison
double bestsum = 0;
for (int i = 0; i < (1 << laenge); i++) {
summe = 0;
for (int j = 0; j < laenge; j++) {
if ((i & (1 << j)) != 0) {
summe += zahlen[j]; // "Zahlen" is my Array which contains the Elements itself
}
teilmenge[i] = summe;
s2 = Math.abs(summe - pi);
if (s2 < s1) {
s1 = s2;
bestsum = summe;
}
}
System.out.println("Best sum: ");
System.out.println(bestsum);
}
共 (0) 个答案