第三题换了三种思路就是通过不了,最后一种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); } }

相关推荐

01-29 18:11
海南大学 Java
奔跑的suechil...:单从项目看这个简历不怕被问穿吗 带微服务的项目需要相当多的项目理解和经验诶
点赞 评论 收藏
分享
程序员小白条:不是哥们,晚了差不多半年多才来找工作啊你得有更强的学历和技术,才能有这种资本啊,现在基本都得1-3年的吧,你这就三个月实习了,而且写的这么模糊
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务