poj3628

来源:互联网 发布:淘宝怎么复制宝贝 编辑:程序博客网 时间:2024/05/17 04:52

链接:点击打开链接

题意:给出n个数,在n个数中选取几个数加和,求大于k的最小和是多少

代码:

#include <iostream>#include<cstdio>#include<cstring>#include <climits>using namespace std;long long N,B,ans;long long s[50];void dfs(long long num,long long sum){    if(num==N+1)    return;    if(sum>=B){        if(sum<=ans)        ans=sum;    }    dfs(num+1,sum);    dfs(num+1,sum+s[num]);}                               //dfs搜索也可以用01背包做int main(){    long long i,j;    while(scanf("%lld%lld",&N,&B)!=EOF){        for(i=0;i<N;i++)        scanf("%lld",&s[i]);        ans=INT_MAX;        dfs(0,0);        printf("%lld\n",ans-B);    }    return 0;}

0 0
原创粉丝点击