给定一组整数。我怎样才能对这个给定整数数组的任何子集求和,以便XOR和是最大值。
示例:给定数组{1,2,3,4}然后回答是7。
以下链接提供了上述问题的解决方案,但我正在寻求动态编程解决方案。
链接:Maximum xor among all subsets of an array
我为上述问题实施了解决方案。我的实施是否正常?
代码:
//initially all index of 'dp' array is -1.
int n;//number of integer in the array
vector<int>v;//given array of integer
int dp[5002][5002];// memo. array
int call(int i,int sum){
if(i>=n)return sum;
if(dp[i][sum] != -1)return dp[i][sum];
int profit1= v[i],profit2 = v[i];
profit1 = call(i+1,(sum xor v[i]));
profit2 = call(i+1,sum);
return dp[i][sum] = max(profit1,profit2);
}