题目来源
题目描述
题目解析
这道题让我想起了算法:司机的最高收入,同样的思路,每个人要么分到A中,要么分到B中。
其限制条件是A区域分而且只能分到5个,求最小战斗力差值
#include <iostream>
#include <string>
#include <iomanip>
#include <algorithm>
#include <vector>
using namespace std;
// 战队力
int minGap = INT_MAX;
void process(std::vector<int> nums, int idx, int restA, int restB, int sumA, int sumB){
if(restA == 0 && restB == 0){
minGap = std::min(minGap, std::abs(sumA - sumB));
return ;
}
if(restA > 0){
process(nums, idx + 1, restA - 1, restB, sumA + nums[idx], sumB);
}
if(restB > 0){
process(nums, idx + 1, restA , restB - 1, sumA , sumB + nums[idx]);
}
}
int main(int argc, char **argv)
{
std::vector<int> nums {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
process(nums, 0, 5, 5, 0, 0);
std::cout << minGap;
}