背包again

Gy最近学习了01背包问题,无聊的他又想到了一个新的问题,给定n个物品的价值,和01背包一样,每个物品只能选1次或0次,求最小不能被得到的价值。

输入

第一行一个正整数T(T <= 100),表示有T组数据。

每组数据输入格式如下:

第一行为一个正整数N(N<=100),表示物品个数。

第二行N个正整数,表示每个物品的价值vi(1<=vi<=1000000)

输出

共输出T行,即每组数据相应答案。

样例输入

2
3
2 4 8
4
1 2 4 8

样例输出

1
16



#include<stdio.h>
#include<stdlib.h>
#define N 110
int a[N];
int cmp(const void *a,const void *b) {
return *(int *)a-*(int *)b;
}
int main() {
	int t,n,m,i;
    scanf("%d",&t);
	while(t--) {
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);
	qsort(a,n,sizeof(a[0]),cmp);
	m=0;
	for(i=0;i<n;i++){
	if(a[i]-m>1)
		break;
	m=m+a[i];
	}
	printf("%d
",m+1);
	}
return 0;
}
原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410809.html