检查任何3个整数的总和是否等于java中数组中的任何一个元素

时间:2014-03-05 06:10:33

标签: java arrays

检查3个整数的总和是否等于java中数组中的任何一个元素。请帮帮我

int[] arr={5, 1, 23, 21, 17, 2, 3, 9, 12};
Arrays.sort(arr);
for(int i=0;i<arr.length;i++)
    System.out.println(+arr[i]);
System.out.println(Arrays.toString(arr));
for(int i=0;i<arr.length;i++){
    int sum=arr[i]+arr[i+1]+arr[i+2];
    if(arr[i]==sum)

2 个答案:

答案 0 :(得分:1)

你想检查任何三个整数的总和,它等于数组中的任何一个元素吗?你需要嵌套循环

for (int i = 0; i < arr.length; i++){
    for (int j = i+1; j < arr.length; j++){
        for (int k = j+1; k < arr.length; k++){
            int sum = arr[i] + arr[j] + arr[k];
            for (int index = 0; index < arr.length; index++){
                if (sum == arr[index])
                    return true;
            }
        }
    }
}
return false;

编辑:我想如果你先对数组进行排序,你可以进行一些优化,但是你仍然需要类似于上面的东西,使用四重嵌套循环来检查所有总和低于最大数字的组合< / p>

答案 1 :(得分:1)

你想做那样的事吗?

int[] arr={5, 1, 23, 21, 17, 2, 3, 9, 12};
for(int i=0;i<arr.length;i++) {
    for(int j=i+1;j<arr.length;j++) {
        for(int k=j+1;k<arr.length;k++) {
            for (int l = 0; l < arr.length; l++) {
                if (arr[i]+arr[j]+arr[k]==arr[l]) {
                    System.out.println(arr[i]+"+"+arr[j]+"+"+arr[k]+"="+arr[l]);
                }
            }
        }
    }
}