题意:Farmer John最近为cow library买了个书架,由于该书架很快被放满了,所以空余的部分都在上部。
现在为了能够到达顶部,需要把一些cow叠放在一起,然后当堆叠在一起的时候可以达到最大高度时,找出满足条件时差值最小滴。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int num[40];
int ans;
int n,b;
void DFS(int pox,int tem)
{
if(pox==n+1)
return ;
if(tem>=b)
{
if(ans>tem-b)
ans=tem-b;
return ;
}
DFS(pox+1,tem+num[pox]);//加上该值
DFS(pox+1,tem);//不加该值
}
int main()
{
while(scanf("%d%d",&n,&b)!=EOF)
{
ans=2000000;
for(int i=0; i<n; i++)
scanf("%d",&num[i]);
DFS(0,0);
printf("%d\n",ans);
}
return 0;
}