AcWing 165. 小猫爬山
原题链接
简单
作者:
光在黑暗中发亮
,
2019-08-17 11:17:15
,
所有人可见
,
阅读 905
C++ 代码
#include <iostream>
#include <cstring>
using namespace std;
int m[25],c[25];
int n,w,ans=20;
void dfs(int now,int cnt)
{
if(cnt>=ans) return;
if(now==n+1) {ans=min(ans,cnt);return;}
for(int i=1;i<=cnt;i++)
if(c[i]+m[now]<=w)
{
c[i]+=m[now];
dfs(now+1,cnt);
c[i]-=m[now];
}
c[cnt+1]=m[now];
dfs(now+1,cnt+1);
c[cnt+1]=0;
}
int main()
{
cin>>n>>w;
for(int i=1;i<=n;i++)
cin>>m[i];
memset(c,0,sizeof(c));
dfs(1,0);
cout<<ans;
return 0;
}