diff --git a/3480. Maximize Subarrays After Removing One Conflicting Pair1 b/3480. Maximize Subarrays After Removing One Conflicting Pair1 new file mode 100644 index 0000000..fbc7b3b --- /dev/null +++ b/3480. Maximize Subarrays After Removing One Conflicting Pair1 @@ -0,0 +1,44 @@ +class Solution +{ +public: + int countMaxOrSubsets(vector& nums) + { + // Step 2: Compute the maximum possible OR of all numbers + int maxOr = 0; + for (int num : nums) + { + maxOr |= num; + } + + int count = 0; + + // Step 3: Start the recursive backtracking + backtrack(nums, 0, 0, maxOr, count); + + // Step 6: Return the final result + return count; + } + + // Step 3: Recursive function to explore subsets + void backtrack(vector& nums, int index, int currentOr, int maxOr, int& count) + { + // Step 4: Base case – all numbers considered + if (index == nums.size()) + { + // Step 4: Check if current OR equals the max OR + if (currentOr == maxOr) + { + count++; // Valid subset found + } + + return; + } + + // Step 5: Recursive calls + // Include current number + backtrack(nums, index + 1, currentOr | nums[index], maxOr, count); + + // Exclude current number + backtrack(nums, index + 1, currentOr, maxOr, count); + } +};