#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写的不对,但是不知道怎么写,求讲解,跪谢