迭代加深DFS,暴力枚举就行啦。。。
代码
//By AcerMo
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,lim;
int a[30],v[30];
int IDAS(int x)
{
for (int i=1;i<=x&&i<=lim;i++)
if (v[i]+a[x]<=m)
{
v[i]+=a[x];
if (x==n) return 1;
if (IDAS(x+1)) return 1;
v[i]-=a[x];
}
return 0;
}
signed main()
{
cin>>n>>m;
for (int i=1;i<=n;i++) cin>>a[i];
for (lim=1;!IDAS(1);lim++)
memset(v,0,sizeof(v));
cout<<lim;
return 0;
}