给定长度为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,但问题是没有任何更好的解决方案。任何人都可以帮助优化这一点。