zoukankan      html  css  js  c++  java
  • hdu 2095 find your present (2)

    http://acm.hdu.edu.cn/showproblem.php?pid=2095

    要找出出现奇数次的数字,我使用了一种大概是归并的方法,相同的就把flag=!flag,不同的就往后继续一个,感觉有超时的可能但没想到更好的办法就试了下,没想到能AC了...囧

    代码如下:

     1 #include<stdio.h>
     2 #define MAX 10000
     3 struct Nu
     4 {
     5     int number;
     6     int flag;
     7 };
     8 int main()
     9 {
    10     int n;
    11     while(scanf("%d",&n)!=EOF&&n)
    12     {
    13         struct Nu a[MAX];
    14         int i,j,ad=0,x;
    15         for(i=0;i<n;i++)
    16         {
    17             scanf("%d",&x);
    18             for(j=0;j<ad;j++)
    19             {
    20                 if(a[j].number==x)
    21                 {
    22                   a[j].flag=!a[j].flag;
    23                   break;
    24                 } 
    25             }
    26             if(j==ad)
    27            {
    28                  a[ad].number=x;a[ad].flag=1; 
    29                  ad++;
    30               }
    31         }
    32         for(i=0;i<=ad;i++)
    33         {
    34             if(a[i].flag==1)
    35               printf("%d
    ",a[i].number);
    36         }
    37     }
    38 }

    后来上网搜了大神们的代码,大神都用异或运算来解决奇数的问题,正好学习下~

    异或运算法则:
    1. a ^ b = b ^ a
    2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
    3. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
    4. a ^ b ^ a = b.
    利用法则四,可以把奇数项找出来。

     1 #include <stdio.h>  
     2 int main()  
     3 {  
     4     int a, n, b;  
     5     while(scanf("%d", &n), n)  
     6     {  
     7         a = 0;  
     8         while(n--)  
     9         {  
    10             scanf("%d", &b);  
    11             a ^= b;  
    12         }  
    13         printf("%d
    ", a);  
    14     }  
    15     return 0;  
    16 }  
  • 相关阅读:
    Java正则表达式
    Java 字符串处理
    Number 和 Math 类
    Day05:集合操作——线性表(二) / 查找表 / 文件操作——File(一)
    Android IPC(进程间通信)Binder机制
    Android Service服务源码相关分析
    Android系统修改相关收集
    常用
    JAVA设计模式
    【转载】Reactor模式和NIO
  • 原文地址:https://www.cnblogs.com/xurenwen/p/3864864.html
Copyright © 2011-2022 走看看