-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path1879.cpp
More file actions
19 lines (19 loc) · 760 Bytes
/
1879.cpp
File metadata and controls
19 lines (19 loc) · 760 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
int dp(vector<vector<int>>& memo, int state, int n, int currPos, vector<int>& nums1, vector<int>& nums2) {
if (currPos == n) return 0;
if (memo[state][currPos] != -1) return memo[state][currPos];
int res = INT_MAX;
for (int i = 0; i < n; ++i) {
if ((state & (1 << i)) == 0) {
res = min(res, (nums2[i] ^ nums1[currPos]) + dp(memo, (state | (1 << i)), n, currPos + 1, nums1, nums2));
}
}
return memo[state][currPos] = res;
}
int minimumXORSum(vector<int>& nums1, vector<int>& nums2) {
int n = nums2.size();
vector<vector<int>> memo((1<<n), vector<int>(n + 1, -1));
return dp(memo, 0, n, 0, nums1, nums2);
}
};