寻找数组中的单身狗(二)狗二的传说

接上篇狗一入侵

狗一看到了英勇无畏的程序猿,立马吓尿了裤子,撒腿就跑,跑了一天一夜后,狗一望着自己已经晒干的裤子,感到丢了面子,懊恼无比,想着将来一定要报这一吓尿之仇,狗由于乱跑一起,并且狂奔了一天一夜于是迷了方向也不知道到了那里,正当狗一准备给麻麻打电话诉委屈的时候,抬头一看,居然看到了,单身狗的圣地国际知名大学西安科技大学。“哈哈,天不亡我狗一”,狗一这时想,既然来到了这处圣地,就应该找绝顶高手来帮忙,狗一进入了西安科技大学四处打听了一番,摸清了圣地的实力分布,欲寻绝顶高手,必上西科之巅,狗一继续往上走,又摸清了一些情况,原来在单身狗世界里一直流传的单身狗圣地,竟是一座囚牢,这里关押着传说中单身狗之王---》狗二,狗二就被囚禁在西科之巅,狗一想要解救单身狗之王狗二,让狗二和自己一起征战天下,但是西科之巅有一个一个凶残的程序猿守护,人称西科草王,西科草王凶猛异常,狗一又一次退缩了,正当狗一准备给麻麻打电话诉委屈的时候,突然听到耳边有人说,西科草王今天去补考了没办法守护西科之巅了,狗一赶忙挂了电话,“哈哈哈哈,天不亡我狗一”。。。。

终于狗一找到了狗二,狗一和狗二又一次的跋山涉水,和狗二一起跑了一天一夜,终于又一次来到了数组乐园,狗一抬头望去,这是。。。

这种光芒。。。,难道??? ,原来英勇无畏的程序猿换了一身衣服变成了机智的程序员。

数组:天哪!!他们是邪恶的单身狗

程序员:受死吧!!万恶的单身狗!!!

#include<iostream>
#include<assert.h>
using namespace std;
void find_singledog(int arr[], int len, int *num1, int *num2)
{
	assert(arr!=NULL);//assert检测参数合法性良好的编程习惯
	assert(num1!= NULL);
	assert(num2 != NULL);
	int temp = 0;
	int count = 1;
	for (int i = 0; i < len; i++)
	{
		temp = temp^arr[i];
	}
	while ((temp &count) == 0)//寻找相异的那一位,用于将数组一分为2,然后各自找出单身狗
	{
		count = count << 1;
	}
	for (int i = 0; i < len; i++)
	{
		if ((arr[i] & count) != 0)//注意不要写成arr[i] &count!= 0,注意运算符的优先级
		{
			*num1 = (*num1) ^ arr[i];
		}
		else
		{
			*num2 = (*num2) ^ arr[i];
		}
	}
}
int main()
{
	int arr[] = { 1, 9, 9, 3, 4, 2, 5, 2, 7,7,11,5,111, 3, 4, 1 };
	int len = sizeof(arr) / sizeof(arr[0]);
	int num1 = 0;
	int num2 = 0;
	find_singledog(arr, len, &num1, &num2);//num1,num2返回型参数
	cout << num1 << endl;
	cout << num2 << endl;
	system("pause");
}
狗一狗二被英勇无畏,机智聪颖,潇洒帅气的程序猿彻底的消灭了。。

转载于:https://www.cnblogs.com/readlearn/p/10806555.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值