0
点赞
收藏
分享

微信扫一扫

Acwing--165. 小猫爬山(暴搜)

浮游图灵 2022-02-02 阅读 119

 

#include<bits/stdc++.h>
using namespace std;
int cats[20],cars[20];

int n,m;
int ans;

void dfs(int u,int k)
{
if(k>=ans)return ;//剪枝
if(u==n)
{
ans=k;
return;
}
for(int i=0;i<k;i++)
{
if(cars[i]+cats[u]<=m)
{
cars[i]=cars[i]+cats[u];
dfs(u+1,k);
cars[i]=cars[i]-cats[u];
}


}

//增加一辆车
cars[k]=cats[u];
dfs(u+1,k+1);
cars[k]=0;

}

int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>cats[i];
}

sort(cats,cats+n);
reverse(cats,cats+n);//从大到小排序

ans=n;

dfs(0,0);

cout<<ans<<endl;


return 0;
}
举报

相关推荐

0 条评论