zoukankan      html  css  js  c++  java
  • hdu 2095

    原题连接:

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

    题意:

      给你n个数(n为奇数)找出不同与其他数的数(说白了就是:找出只出现一次的数);

    思路:

      (1)排序一下,令d=a[0];

      (1)从a[1]开始判断,a[i](i=1,2,...,n)与d是否相等,相等就让d=a[i+1],然后i++(i++是为了防止一个数与自身比较);

      

    代码:

     1 #include<cstdio>
     2 #include<string>
     3 #include<cstring>
     4 #include<iostream>
     5 #include<algorithm>
     6 
     7 using namespace std;
     8 
     9 int a[1000000];
    10 
    11 int main()
    12 {
    13     int n,i;
    14     while(scanf("%d",&n)&&n!=0)
    15     {
    16         int d;
    17         for(i=0;i<n;i++)
    18             scanf("%d",&a[i]);
    19         sort(a,a+n);
    20         d=a[0];
    21         for(i=1;i<n;i++)
    22         {
    23             if(a[i]==d)
    24             {
    25                 d=a[++i];
    26             }
    27             else         //当d与a[i]不相等时,d就是想要的;
    28                 break;
    29         }
    30         printf("%d
    ",d);//后来想了想有bug 比如数据 7 1 1 1 2 3 3 3
    31     }                    //可能是题意没说清:只有一个数只出现一次,其他的数成对出现!!!
    32     return 0;
    33 }

    ps:开始用流输入超时了,找大神代码,发现了另一种方式:位运算;

    出处:http://blog.sina.com.cn/s/blog_8fff62d30100x49p.html

    代码:

     1 #include<stdio.h>
     2 int main()
     3 {
     4    int i,k,n,s;
     5    while(scanf("%d",&n),n)
     6    {
     7        s=0;
     8         for(i=0;i<n;i++)
     9         {
    10               scanf("%d",&k);
    11               s^=k;
    12         }
    13         printf("%d
    ",s);
    14      }
    15 }        

    ---------------------------欢迎评论-----------------------------

  • 相关阅读:
    win10通过ip连接打印机
    tarunexpectedeofinarchive
    软件工程设计阶段的几种图
    代码review checklist
    caffeine的使用
    thetrustanchorsparametermustbenonempty
    mysql explain type的详解
    scp对拷贝文件夹
    虚拟dom与diff算法
    线程池ThreadPoolExecutor的使用
  • 原文地址:https://www.cnblogs.com/x-x-y/p/6914260.html
Copyright © 2011-2022 走看看