首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

应用异或找一个重复数字

2012-10-27 
使用异或找一个重复数字/*1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。

使用异或找一个重复数字

/*1-1000放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现?*/#include <stdio.h>int main(){int array[1001];int i = 0;while (i < 1001)array[i] = ++i;//重复数字为4array[1000] = 4;//解法1 将所有数加起来减掉1+2+……+1000i= 0;int m1 = 0;while (i < 1000)m1 += ++i;int n1 = 0, j = 0;while (j < 1001)n1 += array[j++];printf("解法1得到的重复的数字为: %d\n", n1 - m1);//解法2 将所有数进行异或,再与1到1000异或i= 0;int m2 = 0;while (i < 1000)m2 ^= ++i;int n2 = 0;j = 0;while (j < 1001)n2 ^= array[j++];printf("解法2得到的重复的数字为: %d\n", n2 ^ m2);return 0;}
?

热点排行