java 思路 有四个大于0的数字,取其每三个相加,则其和分别为22、24、27和20,这四个数分别是?

来源:百度知道 编辑:UC知道 时间:2024/05/28 13:37:18
有四个大于0的数字,取其每三个相加,则其和分别为22、24、27和20,这四个数分别是? 求如何判断循环和不重复输出

这个题目不能用4层循环蛮算,不然耗时极长,因为时间繁杂度是O(n^4)。需要用一些算法的技巧。

我们假设:
i + j + k = 22;
i + j + l = 24;
i + k + l = 27;
j + k + l = 20

算法如下:
public class Function {
public static void main(String[] args) {
for (int i = 1; i < 21; i++) {
for (int j = 1; j < 21; j++) {
int k = 22 - i - j;
int l = 24 - i - j;
if (i + k + l == 27 && j + k + l == 20) {
System.out.printf("i=%s, j=%s, k=%s, l=%s", i, j, k, l);
break;
}
}
}
}
}

答案:i=11, j=4, k=7, l=9
这个算法时间复杂度O(n^2)。

楼上的解答貌似正确,只是好像是C语言,输出稍稍改一下就是java了

现在的java也有printf方法了~~~~