題目描述
小易邀請你玩一個數字游戲,小易給你一系列的整數。你們倆使用這些整數玩游戲。每次小易會任意說一個數字出來,然后你需要從這一系列數字中選取一部分出來讓它們的和等於小易所說的數字。 例如: 如果{2,1,2,7}是你有的一系列數,小易說的數字是11.你可以得到方案2+2+7 = 11.如果頑皮的小易想坑你,他說的數字是6,那么你沒有辦法拼湊出和為6 現在小易給你n個數,讓你找出無法從n個數中選取部分求和的數字中的最小數。
輸入描述:
輸入第一行為數字個數n (n ≤ 20) 第二行為n個數xi
(1 ≤ xi
≤ 100000)
輸出描述:
輸出最小不能由n個數選取求和組成的數
示例1
輸入
3 5 1 2
輸出
4
1 /** 2 * 數字游戲 3 * 1、排序 4 2、 遍歷求和 ,當現有的和小於下一個數時 就會有空缺 5 * @author Dell 6 * 7 */ 8 import java.util.ArrayList; 9 import java.util.List; 10 import java.util.Scanner; 11 12 public class Main { 13 static public int n = 3; 14 static public List<Integer> list = new ArrayList(); 15 static { 16 list.add(5); 17 list.add(1); 18 list.add(2); 19 list.sort(null); 20 } 21 22 static public int f() { 23 list.sort(null); 24 int sum = 0; 25 for (Integer integer : list) { 26 if (sum + 1 < integer) { 27 return sum + 1; 28 } else { 29 sum += integer; 30 } 31 } 32 return sum + 1; 33 } 34 35 public static void main(String[] args) { 36 Scanner sc = new Scanner(System.in); 37 n = Integer.parseInt(sc.nextLine()); 38 String[] str = sc.nextLine().split(" "); 39 list = new ArrayList(); 40 for (int i = 0; i < n; i++) { 41 list.add(Integer.parseInt(str[i])); 42 } 43 System.out.println(f()); 44 } 45 } 46