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;
}