poj 3628 Bookshelf 2

#include <iostream>
#include
<algorithm>
#include
<functional>
using namespace std;
int arr[25],s,n,b,shelf[20000005];
void dfs(int i)
{
s
+=arr[i]; shelf[s]=1;
if(s==b)
return ;
else if(s>b)
s
-=arr[i];
else
{
for(int j=i+1;j<n;++j)
{
dfs(j);
if(s==b)
return ;
}
s
-=arr[i];
}
}
int main()
{
cin
>>n>>b;
for(int i=0;i<n;++i)
cin
>>arr[i];
sort(arr,arr
+n,greater<int>());
for(int i=0;i<n;++i)
{
dfs(i);
if(s==b)
{
cout
<<"0\n";return 0;
}
}
for(int i=b+1;;++i)
if(shelf[i]==1)
{
cout
<<i-b<<endl;
break;
}
return 0;
}

  

posted on 2011-07-22 19:57  sysu_mjc  阅读(87)  评论(0编辑  收藏  举报

导航