原题:
直接上代码实现,这是看大佬答案先理解的
代码实现:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
boolean[][] dp = new boolean[2][100000];
int weight;
int sum = 0;
while(n != 0) {
n--;
weight = sc.nextInt();
sum += weight;
for(int i = 1; i <= sum; i++) {
if(dp[0][i]) {
int x = Math.abs(weight - i);
dp[1][x] = true;
dp[1][weight + i] = true;
}
}
for(int i = 1; i <= sum; i++) {
if(dp[1][i]) {
dp[0][i] = true;
}
}
dp[0][weight] = true;
}
int count = 0;
for(int i = 1; i <= sum; i++) {
if(dp[0][i]) {
count++;
}
}
System.out.println(count);
}
}