0
题目链接: 酷丁编程:7089
#include<bits/stdc++.h>
using namespace std;
bool vis[25];
int a[25],f[25],minn=100000000;
int n,c;
void dfs(int t,int sum){
if(minn==0) return ;
if(sum>c) return ;
if(sum+f[n]-f[t-1]<c) return ;
if(t==n+1){
if(sum>=c){
if(minn>=sum-c){
minn=sum-c;
}
}else{
if(minn>=c-sum){
minn=c-sum;
}
}
return ;
}
vis[t]=true;
dfs(t+1,sum+a[t]);
vis[t]=false;
dfs(t+1,sum);
return ;
}
int main(){
cin>>n>>c;
for(int i=1;i<=n;i++){
cin>>a[i];
f[i]=f[i-1]+a[i];
}
dfs(1,0);
cout<<minn;
return 0;
}
