如何最大化给定整数数组的子集的XOR和?

时间:2015-01-15 13:40:06

标签: c algorithm dynamic-programming

给定一组整数。我怎样才能对这个给定整数数组的任何子集求和,以便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);
}

0 个答案:

没有答案