小猫爬山思路
so:
所以代码是:
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int n,m,ans;
int w[21],sum[21];
bool cmp(int a,int b)
{
return a>b;
}
void dfs(int u,int k)
{
if(k>=ans)
{
return;
}
if(u==n+1)
{
ans=k;
return;
}
for(int i=1;i<=k;i++)
{
if(sum[i]+w[u]<=m)
{
sum[i]+=w[u];
dfs(u+1,k);
sum[i]-=w[u];
}
}
sum[k+1]=w[u];
dfs(u+1,k+1);
sum[k+1]=0;
}
int main()
{
cin >> n >> m;
for(int i=1;i<=n;i++)
{
cin >> w[i];
}
sort(w+1,w+1+n,cmp);
ans=n;
dfs(1,1);
cout << ans;
return 0;
}
本文来自小默的博客,转载请注明原文链接:https://www.cnblogs.com/momotrace/p/kitty_die.html