hdoj 2095

    技术2024-10-30  64

    题目大意:在输入的数列中 找唯一出现奇数次的一个数。

    一开始没看到memory limit 直接开了个100000的int数组 然后排序 找出在奇数数位置上与下一位不同的数。

    网上的大牛们还是那么牛 巧妙地用异或运算 还有用map映射

    复习下异或~

    0^0 =0

    0^1=1

    1^0=1

    1^1=0

    可以发现 任何数异或0还是他本身。

    一个数异或另一个数偶数次还是他本身。奶奶的,这思路。。。我在看看映射去。。。

    #include <stdio.h> //题目中Odd 是奇数的意思 int main() { int num,n,result,i; while(scanf("%d",&n),n){ result=0; for(i=0;i<n;++i){ scanf("%d",&num); result^=num;//异或 } printf("%d/n",result); } return 0; }

     

    MAP STL解释链接:

    http://baike.baidu.com/view/95826.htm#9

     

    MAP版本:

    /Map版本 //Coded by 代码疯子 #include <iostream> #include <cstdio> #include <map> using namespace std; int main() { int n, i, t; while(EOF != scanf("%d", &n), n) { map<int, int> v; for(i = 0; i < n; ++i) { scanf("%d", &t); ++v[t]; } map<int, int>::iterator iter; for(iter = v.begin(); iter != v.end(); ++iter) { if(iter->second == 1) { printf("%d/n", iter->first); break; } } } return 0; }

    最新回复(0)