-
发表于 2025.04.05
-
简单的回溯模板题,在
backtrace
函数中,我们需要遍历所有可能的子集,并计算它们的异或和。我们可以通过递归来实现这个过程,每次递归时,我们有两个选择:选择当前元素或者不选择当前元素。最终,我们将所有子集的异或和相加,得到结果。class Solution { public: int result {0}; vector<int> nums; int subsetXORSum(vector<int>& nums) { this->nums = std::move(nums); backtrace(0, 0); return result; } void backtrace(int pos, int cur_xor_result) { if (pos == nums.size()) { result += cur_xor_result; return; } // 选择当前元素 backtrace(pos + 1, cur_xor_result ^ nums[pos]); // 不选择当前元素 backtrace(pos + 1, cur_xor_result); } };
- LC 题目链接
-