题目链接https://www.acwing.com/problem/content/description/167/https://www.acwing.com/problem/content/description/167/
题意
将小猫放入不同的盒子中,求最少要用多少个盒子。
思路
暴力搜索,全部遍历一遍
坑点
无,模板题
代码
#include<bits/stdc++.h>
using namespace std;
const int N=20;
int ans=N;
int n,w;
int cat[N],sum[N];
void dfs(int u,int k)
{
if(k>=ans) return;
if(u==n)
{
ans=k;
return ;
}
for(int i=0;i<k;i++)
{
if(sum[i]+cat[u]<=w)
{
sum[i]+=cat[u];
dfs(u+1,k);
sum[i]-=cat[u];
}
}
sum[k]=cat[u];
dfs(u+1,k+1);
sum[k]=0;
}
int main()
{
cin>>n>>w;
{
cin>>cat[i];
}
sort(cat,cat+n);
reverse(cat,cat+n);
dfs(0,0);
cout<<ans<<endl;
return 0;
}
总结
模板题