我在geeksforgeeks中遇到了与XOR相关的算法问题,试图了解它在做什么,但无法理解。
Problem link(给定n个数字的数组arr []和个数K,找到元素XOR为K的arr []子集的数量)
任何人都可以从第二步中简要地解释一下它的作用,并从哪里读取位操作算法技术来提出建议。
答案 0 :(得分:2)
第三步:
让我们考虑j
(或结果)值5 = 101b
和arr[i-1] = 3 = 011b
我们可以通过两种方式获得结果j = 5
:
-不使用arr[i-1]
,因此第一个求和等于dp[i-1][j]
-使用arr[i-1]
,因此第二个被加数必须来自
具有xor值(j索引)101b xor 011b = 110b = 6
for arr[i-1] = 3
dp[i][5] = dp[i-1][5] + dp[i-1][6]