橙题 悬两关 求调
  • 板块灌水区
  • 楼主jhao_
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/11/20 16:48
  • 上次更新2024/11/20 19:14:29
查看原帖
橙题 悬两关 求调
1533807
jhao_楼主2024/11/20 16:48

题目

#include<bits/stdc++.h>
using namespace std;
int car[20],mem[20],n,w,ans;
bool cmp (int a,int b)
{
	return a>b;
}
void dfs(int now,int cnt)
{
    //cout<<now<<" "<<ans<<" "<<cnt<<endl;
	if(cnt >= ans ) return ;
	if(now == n+1)
	{
		ans=min ( ans , cnt );
      //	
	
		return ;
	}
	for(int i = 1 ; i <= cnt; i++)
	{
		if(car[i] + mem [ now] <= w) 
		car[i]+=mem [ now];
		dfs( now+1,cnt );
		car[i]-=mem[now];
	}
	car[cnt+1]=mem[now];
	dfs( now+1,cnt+1);
	car[cnt+1]=0;
	
}
int main()
{
	cin>>n>>w;
	for(int i=1;i<=n;i++)
	cin>>mem[i];
	sort(mem+1,mem+n+1,cmp);
	ans=n;
	dfs(1,0);
	//cout<<ans;
	//
	return 0;
}
2024/11/20 16:48
加载中...