求多组数据相同位的问题

flydream0
博客专家认证
2013-04-17 11:58:04
假设给定多组数据,比如:0b 1010 0000,0b 10110000,0b 10111111 ...计算各组数据有哪些位是相同的?
比如上面给出的三个二进制数中,只有最高三位才全部相同,因此结果为0b 1110 0000(1表示各组数据此位相同),该算法如何才好?
...全文
176 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
flydream0 2013-04-19
  • 打赏
  • 举报
回复
引用 13 楼 hello_world_ww 的回复:
引用 10 楼 flydream0 的回复:引用 9 楼 hello_world_ww 的回复:引用 4 楼 flydream0 的回复:引用 3 楼 hello_world_ww 的回复:搞错了,异或搞起 你是说 y =0; for(i=0;i<n;i++) { y ^=x[i]; } ????? 这样可以吗? 这样吧…… int y=……
我想你理解错我的意思了,原题的意思要的不是count,而是y的值,最终y值的某位为1则表示参加比较的数对应的位相同,因此参与比较的各个数该位有可能是全部为0或全部为1。现在明白题意了吧?
hello_world_ww 2013-04-19
  • 打赏
  • 举报
回复
引用 10 楼 flydream0 的回复:
引用 9 楼 hello_world_ww 的回复:引用 4 楼 flydream0 的回复:引用 3 楼 hello_world_ww 的回复:搞错了,异或搞起 你是说 y =0; for(i=0;i<n;i++) { y ^=x[i]; } ????? 这样可以吗? 这样吧…… int y=x[0],count=0; for(i=1……
抱歉 搞错了 你要求相同位的位数 那么 后面的判断改为 if(!((1<<i)&y)) count++; 就行 就是这了
nice_cxf 2013-04-19
  • 打赏
  • 举报
回复
引用 11 楼 flydream0 的回复:
引用 8 楼 nice_cxf 的回复:引用 7 楼 flydream0 的回复:引用 6 楼 nice_cxf 的回复:引用 5 楼 flydream0 的回复:引用 1 楼 nice_cxf 的回复:所有值都和第一个异或,记住=0的位,然后找出这些链表中的相同元素就是哪几位是相同的了 如何找?找也需要时间的,你说得太笼统,没仔细思考 这个或就可以,n-1个异或结果……
。。。。。。。。。。。。 晕了,告诉你=0的位是相同的,如果你要=1的位是0,取下反就是了result初值是0 你要搞清楚为什么这样就可以,不然你就算知道应该怎样算有什么意义呢?
hello_world_ww 2013-04-19
  • 打赏
  • 举报
回复
引用 14 楼 flydream0 的回复:
引用 13 楼 hello_world_ww 的回复:引用 10 楼 flydream0 的回复:引用 9 楼 hello_world_ww 的回复:引用 4 楼 flydream0 的回复:引用 3 楼 hello_world_ww 的回复:搞错了,异或搞起 你是说 y =0; for(i=0;i<n;i++) { y ^=x[i]; } ?????……
好吧 ……
flydream0 2013-04-19
  • 打赏
  • 举报
回复
引用 12 楼 nice_cxf 的回复:
引用 11 楼 flydream0 的回复:引用 8 楼 nice_cxf 的回复:引用 7 楼 flydream0 的回复:引用 6 楼 nice_cxf 的回复:引用 5 楼 flydream0 的回复:引用 1 楼 nice_cxf 的回复:所有值都和第一个异或,记住=0的位,然后找出这些链表中的相同元素就是哪几位是相同的了 如何找?找也需要时间的,你说得太笼统,……
之前把你说的“所有为0的位就是这些数据相同的位”会错意了,再起回过头去就明白了,所以本题正确的答案应该是: U8 i,result,tmp; U8 x[2] ={0xff,0xff}; result =0; for(i=1;i<2;i++) { tmp =x[i] ^x[0]; result |=tmp; } result ~=result; 谢了,结贴走人.
flydream0 2013-04-18
  • 打赏
  • 举报
回复
引用 8 楼 nice_cxf 的回复:
引用 7 楼 flydream0 的回复:引用 6 楼 nice_cxf 的回复:引用 5 楼 flydream0 的回复:引用 1 楼 nice_cxf 的回复:所有值都和第一个异或,记住=0的位,然后找出这些链表中的相同元素就是哪几位是相同的了 如何找?找也需要时间的,你说得太笼统,没仔细思考 这个或就可以,n-1个异或结果,把结果或一下,所有为0的位就是这些数据……
按你的意思我大概代码可以如下: U8 i,result,tmp; U8 x[2] ={0xff,0xff}; result =1; for(i=1;i<2;i++) { tmp =x[i] ^x[0]; result |=tmp; } 但是按此计算结果result =0xff &0xff =0; 结果明显不对,应该为0xff才对,因为x[0],x[1]各个位都相同,所以结果result各位都应该为1,表示比较的数各位都是相同的。
flydream0 2013-04-18
  • 打赏
  • 举报
回复
引用 9 楼 hello_world_ww 的回复:
引用 4 楼 flydream0 的回复:引用 3 楼 hello_world_ww 的回复:搞错了,异或搞起 你是说 y =0; for(i=0;i<n;i++) { y ^=x[i]; } ????? 这样可以吗? 这样吧…… int y=x[0],count=0; for(i=1;i<n;i++) y^=x[i]; for(i=……
假设X数据为两个数,x[0]=0xff;x[1]=0xff; 那么y=0xff ^0xff =0; count=0; 这个结果显然不对,结果应该为0xff,因为x[0]与x[i]各个位的数都相同。另count表示结果为1的总个数,这里不是题目中想要的.
hello_world_ww 2013-04-18
  • 打赏
  • 举报
回复
引用 4 楼 flydream0 的回复:
引用 3 楼 hello_world_ww 的回复:搞错了,异或搞起 你是说 y =0; for(i=0;i<n;i++) { y ^=x[i]; } ????? 这样可以吗?
这样吧…… int y=x[0],count=0; for(i=1;i<n;i++) y^=x[i]; for(i=0;i<32;i++) if((1<<i)&y) count++;
nice_cxf 2013-04-18
  • 打赏
  • 举报
回复
引用 7 楼 flydream0 的回复:
引用 6 楼 nice_cxf 的回复:引用 5 楼 flydream0 的回复:引用 1 楼 nice_cxf 的回复:所有值都和第一个异或,记住=0的位,然后找出这些链表中的相同元素就是哪几位是相同的了 如何找?找也需要时间的,你说得太笼统,没仔细思考 这个或就可以,n-1个异或结果,把结果或一下,所有为0的位就是这些数据相同的位 全部为1的呢? ……
全1表示没有相同的位,你自己测试一下不就知道了?
flydream0 2013-04-18
  • 打赏
  • 举报
回复
引用 6 楼 nice_cxf 的回复:
引用 5 楼 flydream0 的回复:引用 1 楼 nice_cxf 的回复:所有值都和第一个异或,记住=0的位,然后找出这些链表中的相同元素就是哪几位是相同的了 如何找?找也需要时间的,你说得太笼统,没仔细思考 这个或就可以,n-1个异或结果,把结果或一下,所有为0的位就是这些数据相同的位
全部为1的呢?
nice_cxf 2013-04-18
  • 打赏
  • 举报
回复
引用 5 楼 flydream0 的回复:
引用 1 楼 nice_cxf 的回复:所有值都和第一个异或,记住=0的位,然后找出这些链表中的相同元素就是哪几位是相同的了 如何找?找也需要时间的,你说得太笼统,没仔细思考
这个或就可以,n-1个异或结果,把结果或一下,所有为0的位就是这些数据相同的位
flydream0 2013-04-18
  • 打赏
  • 举报
回复
引用 1 楼 nice_cxf 的回复:
所有值都和第一个异或,记住=0的位,然后找出这些链表中的相同元素就是哪几位是相同的了
如何找?找也需要时间的,你说得太笼统,没仔细思考
flydream0 2013-04-18
  • 打赏
  • 举报
回复
引用 3 楼 hello_world_ww 的回复:
搞错了,异或搞起
你是说 y =0; for(i=0;i<n;i++) { y ^=x[i]; } ????? 这样可以吗?
hello_world_ww 2013-04-17
  • 打赏
  • 举报
回复
搞错了,异或搞起
hello_world_ww 2013-04-17
  • 打赏
  • 举报
回复
一次遍历,按位与 ,统计一下最后结果就行 O(n)复杂度,极限了吧
nice_cxf 2013-04-17
  • 打赏
  • 举报
回复
所有值都和第一个异或,记住=0的位,然后找出这些链表中的相同元素就是哪几位是相同的了

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧