算法 题解 | 灵异背包? 求解代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(br.readLine()); String[] str = br.readLine().split("\\s+"); long sum = 0; int minOdd = Integer.MAX_VALUE; for (String s : str){ int num = Integer.parseInt(s); sum += num; if((num&1)==1){ minOdd=Math.min(num, minOdd); } } long res; if((sum&1)==0){ res = sum; }else{ if(minOdd!=Integer.MAX_VALUE){ res = sum - minOdd;// 总和是奇数,需要减去最小的奇数(若存在) }else{ res = 0;// 没有奇数,只能选空背包 } } out.println(res); out.flush(); out.close(); br.close(); }