做网站先做前台还是后台,学广告设计前景怎么样,wordpress绑定多郁闷,梧州网站推广设计#xfeff;#xfeff;#xfeff;题目解决代码及点评/*已知数组中有两个数只出现一次#xff0c;其他成对出现#xff0c;请找出这两个数解决办法#xff1a;1#xff09;简化问题#xff0c;如果数组中只有一个数出现一次#xff0c;那么只要对这个数组做异或即可2… 题目解决代码及点评/*已知数组中有两个数只出现一次其他成对出现请找出这两个数解决办法1简化问题如果数组中只有一个数出现一次那么只要对这个数组做异或即可2所以这个问题的根本是怎么把这两个数分开在两组里这两组数据都有问题1的特点3再分别找出这两个数分组办法1将所有数据做异或那么这个结果相当于两个只出现一次的那个值的异或2在这个结果里找出某个位置为1的位3根据这个位的值将数组分成两组一组是该位为0一组该位为1这种分法把两个不同的值分在两组并且两组中其他的数是成对出现的
*/#include iostream
using namespace std;void find(int s[],int len)
{if(len2) return;// 将所有元素的异或值保存在xResultint xResult s[0];for (int i 1; i len; i){xResult ^ s[i];}// 并且保存在aResult和bResult最后aResult和bResult将会输出不同的两个数int aResult xResult, bResult xResult;// 计算哪个位为1int bit 0; while (!(bResult (1 bit))) bit;// 通过该位得到一个该位为1的数这个数将把整个数组分成两部分int andValue 1 bit;for (int i 0; i len; i){// 如果数组中某个数该位为1则与aResult做异或if (s[i] andValue)aResult ^ s[i];// 否则与bResult做异或这样相当于将数组分成两部分了elsebResult ^ s[i];}// 输出结果cout aResult bResult endl;
}// 测试主函数
int main() {int s[]{1,2,7,4,5,4,5,2,6,1};int lensizeof(s)/sizeof(int);find(s,len);system(pause);return 0;
}代码下载及其运行代码下载地址http://download.csdn.net/detail/yincheng01/6704519解压密码c.itcast.cn下载代码并解压后用VC2013打开interview.sln并设置对应的启动项目后点击运行即可具体步骤如下1设置启动项目右键点击解决方案在弹出菜单中选择“设置启动项目”2在下拉框中选择相应项目项目名和博客编号一致3点击“本地Windows调试器”运行程序运行结果 转载于:https://www.cnblogs.com/new0801/p/6177346.html