20250405 finished.
This commit is contained in:
parent
0a9b978b69
commit
07927a4392
|
@ -580,3 +580,5 @@ mod p2873_maximum_value_of_an_ordered_triplet_i;
|
|||
mod p2874_maximum_value_of_an_ordered_triplet_ii;
|
||||
|
||||
mod p1123_lowest_common_ancestor_of_deepest_leaves;
|
||||
|
||||
mod p1863_sum_of_all_subset_xor_totals;
|
||||
|
|
43
src/problem/p1863_sum_of_all_subset_xor_totals.rs
Normal file
43
src/problem/p1863_sum_of_all_subset_xor_totals.rs
Normal file
|
@ -0,0 +1,43 @@
|
|||
/**
|
||||
* [1863] Sum of All Subset XOR Totals
|
||||
*/
|
||||
pub struct Solution {}
|
||||
|
||||
// submission codes start here
|
||||
|
||||
impl Solution {
|
||||
pub fn subset_xor_sum(nums: Vec<i32>) -> i32 {
|
||||
let mut result = 0;
|
||||
|
||||
Self::search(0, 0, &nums, &mut result);
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
fn search(mut sum: i32, i: usize, nums: &Vec<i32>, result: &mut i32) {
|
||||
if i == nums.len() {
|
||||
return;
|
||||
}
|
||||
|
||||
// 不选择i
|
||||
Self::search(sum, i + 1, nums, result);
|
||||
// 选择i
|
||||
sum = sum ^ nums[i];
|
||||
*result += sum;
|
||||
Self::search(sum, i + 1, nums, result);
|
||||
}
|
||||
}
|
||||
|
||||
// submission codes end
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_1863() {
|
||||
assert_eq!(6, Solution::subset_xor_sum(vec![1, 3]));
|
||||
assert_eq!(28, Solution::subset_xor_sum(vec![5, 1, 6]));
|
||||
assert_eq!(480, Solution::subset_xor_sum(vec![3, 4, 5, 6, 7, 8]));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user