第三题换了三种思路就是通过不了,最后一种10%。思路是backtrack穷举然后选最优解,递归时保留一个track剪枝。真的心力憔悴。用例都能过,自己又试了一些,一提交就是0%。结果最后一种方法删掉track直接在原数列上修改(每次删除一个)还能通过10%,这就让我很迷惑了。。 void backtrack(vector<int>& nums, int remain, int val, int thres, int k) { // // Base case if (remain <= 0) { res = max(val, res); return ; } for (int i = 0; i < nums.size(); i++) { int value = nums[i]; nums.erase(nums.begin() + i); if (value > thres) { backtrack(nums, remain - k - 1, val + value, thres, k); } else { backtrack(nums, remain - 1, val + value, thres, k); } nums.insert(nums.begin() + i, value); } }

相关推荐

点赞 评论 收藏
分享
05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求...:注意把武大标粗标大 本地你俩不是乱杀
实习进度记录
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务