您的位置:首页 > 其它

poj 3628 Bookshelf 2

2011-07-22 19:57 141 查看
#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;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: