37分求调
查看原帖
37分求调
1313312
zzdkf20081224楼主2024/7/20 08:33
#include<bits/stdc++.h>
using namespace std;
int n,w,a[20],k[20],ans=0;
bool cmp(int a,int b){
	return a>b;
} 
void dfs(int x,int y){//x为当前装到了第几只小猫,y为第几辆缆车 
	if(x>=n) {
		ans=y; return;
	}
	while(k[y]<=w){
		k[y]+=a[x];
		x++;
	}
	k[y]-=a[x];
	x--;
	while(a[n]+k[y]<=w){
		k[y]+=a[n];
		n--;
	}
	k[y]-=a[n]; 
	n++;
	dfs(x+1,y+1);
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>w;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	
	sort(a+1,a+n+1,cmp);
	dfs(1,1);
	cout<<ans;
	
	return 0;
}```
我感觉我dfs写的不对,但是不知道怎么写,求讲解,跪谢
2024/7/20 08:33
加载中...