我真的很难解决这个算法。我知道我必须做嵌套循环,但我
无法解决如何解决它。
基本上你有 j^a,k^b,l^c,m^d,其中 a、b、c 和 d 中的每一个都是 17 个之一
数字 {-5、-4、-3、-2、-1、-1/2、-1/3、-1/4、0 或相同的数字,但为正数}。
现在我要向用户询问近似值(比如说你),然后问他
为 4 个数字。我需要找到这些数字的组合,以满足
方程:j^a*k^b*l^c*m^d 其中它在 u 的 0.01 以内。例如有人选择
238900 进行近似,然后选择 14,102329,1936,13 作为他的 4 个值,然后程序
将检查每个组合(即 14^-5*102329^-5*..etc)以找到最接近的
值 238900 在 1% 以内。答案是 14^-5*102329^1*1936^1/2*13^4 给出
你大约 239103 (有时你不能真正接近 u 值的 1% 以内)。
我只是在努力放置嵌套循环,因此它会检查每个可能的组合
同时,而不是一次检查一个。假设变量是
声明 (a,b,c,d,j,k,l,m) asa double 和 q 作为 int:
double [] numbers = {-5.0, -4.0, -3.0, -2.0, -1.0, -1.0/2.0, -1.0/3.0, -1.0/4.0, 0.0, 1.0/4.0, 1.0/3.0, 1.0/2.0, 1.0, 2.0, 3.0, 4.0, 5.0}
while(j - u < k){
while(k - u < l){
while(l - u < m){
while(m < u * 0.01){
Math.pow(m,numbers[q];
q++;
}
int i = 0;
if(i == 0){
q = 0;
i++;
}
Math.pow(l,numbers[q]);
q++;
}
int y = 0;
if(y == 0){
q = 0;
y++;
}
Math.pow(k,numbers[q]);
q++;
}
int r = 0;
if (r == 0){
q = 0;
r++
}
Math.pow(j,numbers[q]);
q++;
}