• 小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和


    小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和的数字中的最小数。 

    输入描述:
    输入第一行为数字个数n (n ≤ 20)
    第二行为n个数xi (1 ≤ xi ≤ 100000)
    输出描述:
    输出最小不能由n个数选取求和组成的数
    输入例子:
    3
    5 1 2
    输出例子:
    4
    算法思想:求最小不连续的数 但是看了别人的答案感觉很好,当前i项的和与第i+1项不连续时,那么最小不能达到的数就是前i项的和+1

     1 package fromniuke;
     2 
     3 import java.util.Arrays;
     4 import java.util.Scanner;
     5 //思想:当前i项的和与第i+1项不连续时,那么最小不能达到的数就是前i项的和+1
     6 public class Test25 {
     7 
     8     public static void main(String[] args) {
     9 
    10         Scanner sc = new Scanner(System.in);
    11         while(sc.hasNext()){
    12             int n = sc.nextInt();
    13             int[] arr = new int[n];
    14             for (int i = 0; i < n; i++) {
    15                 arr[i] = sc.nextInt();
    16             }
    17             Arrays.sort(arr);
    18             int sum = 0;
    19             for (int i = 0; i <n-1; i++) {
    20                 sum += arr[i];
    21                 if(sum+1<arr[i+1]){
    22                     System.out.println((sum+1));
    23                     break;
    24                 }
    25             }
    26         }
    27     }
    28 
    29 }
    Jumping from failure to failure with undiminished enthusiasm is the big secret to success.
  • 相关阅读:
    2015年中国500强企业
    汇编语言
    oracle数据库学习路线
    OI生涯回忆录
    NOIP 2020游记
    CF223B Two Strings 题解
    CSP-S 2020游记
    CSP/NOIP 注意事项(2020)
    Luogu P6583 回首过去 题解
    Luogu P2210 Haywire 题解
  • 原文地址:https://www.cnblogs.com/chongerlishan/p/5968597.html
Copyright © 2020-2023  润新知