怎么建网站 做app软件,wordpress文章底部,网站添加模块,中企动力 网站建设找单身狗2 之前遇到类似的题目的思路#xff1a;
首先写出这些数的二进制形式#xff1a; 核心原理 接下来的问题是怎么把5和6分开来#xff1f; 这里是最后一位进行比较#xff0c;按位异或是相同为0#xff0c;相异为1#xff0c;最后一位从上图看出是1#xff0c;说…找单身狗2 之前遇到类似的题目的思路
首先写出这些数的二进制形式 核心原理 接下来的问题是怎么把5和6分开来 这里是最后一位进行比较按位异或是相同为0相异为1最后一位从上图看出是1说明这两个数不一样就可以让这两个数被分开
这道题的难点
1.怎么把它分成两组
2.为什么分成两组
3.根据什么标准分成两组
接下来是代码过程
void FindNum(int arr[],int n,int* pNum1,int*pNum2)
{//1.对整个数组进行异或处理int tmp0;for(int i0;in;i){tmp^arr[i];}
}
//2.tmp接受两个不同数字异或的结果
int pos-1;
for(int i0;i32;i)
{if(((tmpi)1)1){posi;break;}
}
if(pos-1)
{*pNum1-1;*pNum2-1;return;
}
for(int i0;in;i)
{if((arr[i]pos)11){*pNum1^arr[i];}else{*pNum2^arr[i];}
}
int main()
{int arr[]{1,2,3,4,5,1,2,3,4,6};int lensizeof(arr)/sizeof(arr[0]);int ret10;int ret20;FindNum(arr,len,ret1,ret2);printf(%d %d,ret1,ret2);return 0;
}运行结果