背包again

来源:互联网 发布:西部数码域名转移管理 编辑:程序博客网 时间:2024/05/02 02:48

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

输入

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

每组数据输入格式如下:

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

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

输出

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

样例输入

232 4 841 2 4 8

样例输出

116
#include<stdio.h>#include<stdlib.h>#define N 110int 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\n",m+1);}return 0;}
0 0