fork download
  1. import java.util.HashSet;
  2. import java.util.Scanner;
  3.  
  4. public class Main {
  5.  
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner(System.in);
  8. int n = scanner.nextInt(); // 读取数组的大小
  9. int[] arr = new int[n];
  10.  
  11. // 读取数组的元素
  12. for (int i = 0; i < n; i++) {
  13. arr[i] = scanner.nextInt();
  14. }
  15.  
  16. // 判断是否存在两个子数组的和相等
  17. System.out.println(findSubsetSum(arr));
  18. }
  19.  
  20. // 查找是否存在两个子数组的和相等
  21. public static int findSubsetSum(int[] arr) {
  22. // 使用哈希集合存储每个子数组的和
  23. HashSet<Integer> sumSet = new HashSet<>();
  24.  
  25. // 遍历所有可能的子数组
  26. for (int i = 0; i < arr.length; i++) {
  27. int currentSum = 0;
  28. for (int j = i; j < arr.length; j++) {
  29. currentSum += arr[j]; // 计算当前子数组的和
  30.  
  31. // 如果该和已经出现过,则说明存在两个子数组的和相等
  32. if (sumSet.contains(currentSum)) {
  33. return 2;
  34. }
  35.  
  36. sumSet.add(currentSum); // 将当前子数组和添加到集合中
  37. }
  38. }
  39.  
  40. // 如果没有找到重复的和,则返回1
  41. return 1;
  42. }
  43. }
  44.  
Success #stdin #stdout 0.14s 56688KB
stdin
4
22 11 66 99
stdout
2