Minimum XOR Sum of Two Arrays LeetCode solution in C++
1class Solution {2public:3int dp[14][16384];4int dfs(vector<int> &nums1, vector<int> &nums2, int used, int i) {5if (i == nums1.size()) return 0;67if (dp[i][used] > -1) return dp[i][used];8int small = INT_MAX;9for (int j = 0; j < nums2.size(); j++) {10if (!(used & (1 << j))) {11small = min(small, (nums1[i] xor nums2[j]) + dfs(nums1, nums2, used | (1 << j), i + 1));12}13}14return dp[i][used] = small;15}16int minimumXORSum(vector<int> &nums1, vector<int> &nums2) {17memset(dp, -1, sizeof(dp));18return dfs(nums1, nums2, 0, 0);19}20};