找到每个组合的XOR等于给定数字的组合数

时间:2015-12-10 18:15:43

标签: c++ arrays algorithm dynamic-programming xor

给定长度为arr的数组n,找出arr的子集数量,使得这些子集的XOR(^)等于给定数量, total

我有这种dp方法但是花了太多时间。 total始终小于1024,arr[n]始终小于1024。

memset(answer,0,sizeof(answer));
answer[0][total]=1;
answer[0][total^arr[0]]=answer[0][total^arr[0]]+1;
for(int i=1; i<n; i++)
{
    for(int j=0; j<1024; j++)
    {
        answer[(i%2)][j]=(answer[(i-1)%2][j]%MOD+answer[(i-1)%2][j^arr[i]]%MOD)%MOD;
    }
}
return answer[(n-1)%2][0];

问题在这里Given an array of length n, find number of subsets where XOR of a subset is equal to a given number,但问题是没有任何更好的解决方案。任何人都可以帮助优化这一点。

0 个答案:

没有答案