alibabamama 发表于 2018-7-26 08:57:41

【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组

package issplittwointarray;  

  
import java.util.ArrayList;
  
import java.util.Scanner;
  

  
public class Main {
  public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  int arrayLength = sc.nextInt();
  int[] intArray = new int;
  for(int i = 0; i < intArray.length; i++){
  intArray = sc.nextInt();
  }
  boolean isSplitTwoEqualArrays = Main.isSplitTwoEqualArray(intArray);
  System.out.println(isSplitTwoEqualArrays);
  }
  public static boolean isSplitTwoEqualArray(int[] intArray){
  int multipleOfFiveSum = 0;
  int multipleOfThreeSum = 0;
  ArrayList<Integer> otherInts = new ArrayList<Integer>();
  for(int i = 0; i < intArray.length; i++){
  if(intArray % 5 == 0){
  multipleOfFiveSum += intArray;
  } else if(intArray % 3 == 0){
  multipleOfThreeSum += intArray;
  } else {
  otherInts.add(intArray);
  }
  }
  int difference = multipleOfFiveSum - multipleOfThreeSum;
  ArrayList<Integer> accumulationSum = new ArrayList<Integer>();
  accumulationSum.add(0);
  for (Integer otherInt : otherInts) {
  accumulationSum = Main.expressionsAccumulation(accumulationSum, otherInt);
  }
  for (Integer sum : accumulationSum) {
  if((sum == difference) || (sum == difference * (-1)))
  return true;
  }
  return false;
  }
  public static ArrayList<Integer> expressionsAccumulation(ArrayList<Integer> preSums, int extraInt){
  ArrayList<Integer> accumulationSum = new ArrayList<Integer>();
  for (Integer preSum : preSums) {
  accumulationSum.add(preSum + extraInt);
  accumulationSum.add(preSum - extraInt);
  }
  return accumulationSum;
  }
  
}
页: [1]
查看完整版本: 【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组