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