0
給定一個大小爲n的數組,其中只包含正整數。令l爲數組A中的最大數。生成數組B的大小爲0至l,使得B [j]是數組A的最大子集的大小,其XOR值等於j。存在於數組子集中的值的異或
限制條件: 陣列的尺寸A可以是從在數組A爲1〜10000 元素的範圍可以從1到1000
例如:如果陣列A具有(1,2,3,4 ),那麼數組B將如下生成。
B(0)= 3作爲具有異或值0是(1,2,3)最大的子集,並且具有尺寸3.
B(1)= 2作爲具有異或值最大的子集1是(2,3),並且具有大小2
B(2)= 2作爲具有異或值2是(1,3)最大的子集,並且具有大小2
B(3)= 2作爲具有XOR值3的最大子集是(1,2)並且具有大小2.
B(4)= 4,作爲具有XOR值4的最大子集是(1,2,3,4)並且具有大小4 。
我的蠻力方法:生成數組A的所有非空子集,並計算每個子集的XOR,並在B [j]中保存具有XOR值j的最大大小子集。
有沒有更高效的方法來做到這一點?
輸出我從來沒有想過這可能使用動態編程來完成。你能指出我更好地解釋這種方法的鏈接嗎? –
我沒有這樣的鏈接,我可以嘗試更新答案以更好地解釋此問題 – marvel308