import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
if (input == null){
return;
}
String[] nums = input.split(" ");
// int[] nums = {2, 1, 3, 1, 1, 1, 5, 3};
int[] arr = new int[nums.length];
for (int i = 0; i < nums.length; i++) {
arr[i] = Integer.parseInt(nums[i]);
}
boolean meth = meth(arr);
System.out.println(meth);
}
public static boolean meth(int[] arr) {
if (null == arr || arr.length < 4) {
return false;
}
int startIndex = 1;
int endIndex = arr.length - 2;
int sum = 0;
int fSum = arr[0];
int eSum = arr[arr.length - 1];
int mSum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
mSum = sum - fSum - eSum - arr[startIndex] - arr[endIndex];
while (fSum < eSum) {
fSum += arr[startIndex];
startIndex++;
if (startIndex > endIndex - 2) {
return false;
}
mSum = sum - fSum - eSum - arr[startIndex] - arr[endIndex];
continue;
}
while (fSum > eSum) {
eSum += arr[endIndex];
endIndex--;
if (startIndex > endIndex - 2) {
return false;
}
mSum = sum - fSum - eSum - arr[startIndex] - arr[endIndex];
continue;
}
while (startIndex <= endIndex - 2) {
if (fSum == eSum && eSum == mSum) {
System.out.println("first index : " + startIndex + ", next index : " + endIndex);
return true;
}
eSum += arr[endIndex];
endIndex--;
if (startIndex == endIndex - 2) {
fSum += arr[startIndex];
startIndex++;
endIndex = arr.length - 2;
eSum = arr[arr.length - 1];
mSum = sum - fSum - eSum - arr[startIndex] - arr[endIndex];
}
}
return false;
}
}
三等分数组,使每段数组和相等
于 2022-03-11 09:09:03 首次发布