1. 程式人生 > >數字遊戲----網易2016研發工程師筆試題(二)

數字遊戲----網易2016研發工程師筆試題(二)

[程式設計題] 數字遊戲 小易邀請你玩一個數字遊戲,小易給你一系列的整數。你們倆使用這些整數玩遊戲。每次小易會任意說一個數字出來,然後你需要從這一系列數字中選取一部分出來讓它們的和等於小易所說的數字。 例如: 如果{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

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

bool cmp(int first, int next) {
	return first < next;
}
int main(){
	int miss = 0;
	int n;
	cin >> n;

	vector<int> vec(n);
	for (int i = 0; i < n; i++)cin >> vec[i];

	sort(vec.begin(), vec.end(), cmp);

	for (int i = 0; i<n; i++){
		if (vec[i]>miss + 1) break;
		miss += vec[i];
	}

	cout << miss + 1 << endl;

	return 0;
}