#include <bits/stdc++.h>
using namespace std;
int n,t,a[501],k[501],q[501],minn=INT_MAX,cnt=1;
void dfs(int p,int time,int b)
{
if(p>cnt)
{
minn=min(time,minn);
return;
}
if(time>minn)
return;
if(k[p-1]+t>k[p]&&b==1)
dfs(p+1,time,0);
int ans=0;
for(int i=1;a[i]<=k[p];i++)
if(q[i]==0)
{
q[i]=1;
ans+=k[p]-a[i];
}
dfs(p+1,time+ans,1);
for(int i=1;a[i]<=k[p];i++)
q[i]=0;
dfs(p+1,time,0);
cout<<p<<" "<<time<<" "<<b;
}
int main()
{
cin>>n>>t;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
k[1]=a[1];
for(int i=2;i<=n;i++)
if(a[i]!=a[i-1])
k[++cnt]=a[i];
dfs(1,0,0);
cout<<minn;
return 0;
}
这也会爆栈???/疑问