我有16个不相关的二进制字符串(长度相同)。例如。 100000001010,010100010010等等,我需要找出一个位串,其中位置x是1 IF位置x是1,对于16位中的ATLEAST 2位串。
最初,我尝试使用按位XOR,只要偶数个字符串包含1,这就行得很好,但是当奇数个字符串包含1时,给出的答案是反向的。
A simple example (with 3 strings) would be:
A: 10101010
B: 01010111
C: 11011011
f(A,B,C)= answer
Expected answer: 11011011
Answer I'm getting right now: 11011001
我知道我错了,但我不知道如何继续 非常感谢
答案 0 :(得分:2)
您可以执行类似
的操作unsigned once = x[0], twice = 0;
for (int i = 1; i < 16; ++i) {
twice |= once & x[i];
once |= x[i];
}
答案 1 :(得分:0)
(A和B)或(A和C)或(B和C)
这比你原来的更复杂。