【C/C++】位运算之找出独苗
来源:互联网 发布:java 什么是存储过程 编辑:程序博客网 时间:2024/06/01 18:43
一、问题描述
一组数据中只有一个数字出现了一次。
其他所有数字都是成对出现的。请找出这个数字。(使用位运算)
二、问题分析
定义一个变量ck并初始化为0
从数组的第一个元素开始判断
若ck第 i-1 位(从右向左)是0,那么置一
否则置0
全部判断完后,检测ck的那些位是1
这些1的 位+1 便是独苗的数字
三、代码实现
#include<stdio.h>int* check(int arr[]){int *parr = arr;int ck = 0;int i = 0; while(*arr){if(0 == (ck<<arr[i]))//判断这个二进制数的第i位是否为0 ck|=(1<<arr[i]-1);//是的话,置1elseck^=(1<<arr[i]-1);//否则,置0arr++;}for(i = 0; i<32 ; i++){if(((ck>>i)&1)==1)printf("%d ",i+1);if((ck>>i)==0)break;}return parr;}int main(){int arr[10] = {0};int i = 0;printf("请输入九个正整数:>");for(i = 0;i<9;i++){ scanf("%d",&arr[i]);}check(arr);return 0;}
1 0
- 【C/C++】位运算之找出独苗
- C语言之位运算
- C语言之位运算
- C语言之位运算
- C语言之位运算
- c语言之位运算
- C语言修行之位运算
- c语言特色之位运算
- C语言位运算之异或 ^
- c语言之坑--位运算
- c语言之位运算详解
- 【C++】C++之位运算符
- C语言基础之位运算
- C-枚举,位运算
- C语言位运算
- C语言位运算
- 【C++】位运算符
- C语言位运算
- 中国剩余定理 模板
- UVA 11059(水题)
- CodeForces 289B Polo the Penguin and Matrix
- Java监测窗口事件
- [环境搭建] VS-Visual Studio-IIS Express 支持局域网访问
- 【C/C++】位运算之找出独苗
- Tomcat单机多实例配置
- 40个Java集合类面试题和答案
- java开源即时通讯软件服务端openfire源码构建
- 【小白讲白盒】中篇:白盒单测入门
- 在ionic中巧用iframe解决跳转到第三方平台时不能回调的问题-比如支付
- Python中的OS模块简介
- 【Egret】Native版本 视频播放器(android)
- 19流总结