给定数组中大小为k的子集的xors之和

时间:2018-06-17 12:05:05

标签: sum xor

对于上述问题,我找到了所有大小为k的子集,并使用以下方法计算了它们的xors:

void getSum(long arr[], long data[], int start, int end, int index, int r, long currXOR)
{   
    if (index == r)
    {
        sum = (sum%mod + currXOR%mod)%mod;
        return;
    }

    for (int i=start; i<=end && end-i+1 >= r-index; i++)
    {
        data[index] = arr[i];
        currXOR = currXOR ^ arr[i];    //consider current element for xor
         getSum(arr, data, i+1, end, index+1, r, currXOR);
         currXOR = currXOR ^ arr[i];   //exclude current element from xor
    }
}

但是代码没有通过时间复杂度约束某些测试用例。由于有人要求在线编码,测试用例不详。

你能帮助我以更有效的方式解决问题吗?

0 个答案:

没有答案