赞
踩

这道题让我想起了算法:司机的最高收入,同样的思路,每个人要么分到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; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。