1、 用一个数组,cab[MaxN], 记录每一辆车上所有猫的重量;
void dfs(int now, int cnt) //now 表示当前已经有多少只猫上车,车的数量是 cnt;
cab[i] += cat[now]; //选择某一辆车 cab[i] 辆装当前猫 cat[now]
dfs(now + 1, cnt); //递归
cab[i] -= cat[now]; //递归出来,车 cab[i] 辆不装当前猫 cat[now]
2、 先排序,从大到小,优先安排重量大的猫上车;
3、 对于cnt >= ans 时候,就没有必要进行了。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int MaxN = 20;
int cat[MaxN];
int cab[MaxN]; // 记录每一辆车上所有猫的重量
int n, w;
int ans = 0x3f3f3f3f