查找不同的木棍

题目描述:
  小明的收集了一些木棍,并测量了每个木棍的长度,记录下来.假设小明有奇数根木棍,只有一个木棍找不到跟它一样长的另外一根木棍.请编程找出这个没有相同长度的木棍,输出它的长度.
  知识点: 排序;或者用异或操作 0 异或x=x;x异或x=0;a异或b异或c=a异或(b异或c)=(a异或b)异或c=a异或c异或b

 

输入描述:

输入包含一个奇数n(n<30000),然后是n个整数,表示每个木棍的长度,并保证只有一根木棍找不到跟他一样长的木棍.  

 

输出描述:

输出符合条件的木棍的长度

 

样式输入:

5 22 76 87 76 22  

 

样式输出:

87  

 
#include<stdio.h>
void quickSort(int a[],int left,int right)
{
   int i,j,temp;
   i=left;
   j=right;
   temp=a[left];
   if(left>right)
      return;
   while(i!=j)/*找到最终位置*/
   {
      while(a[j]>=temp && j>i)
         j--;
      if(j>i)
         a[i++]=a[j];
       while(a[i]<=temp && j>i)
          i++;
       if(j>i)
          a[j--]=a[i];
         
   }
   a[i]=temp;
   quickSort(a,left,i-1);/*递归左边*/
   quickSort(a,i+1,right);/*递归右边*/
}

void main()
{
    int a[30002];
    int i,n;
    
    scanf("%d",&n);
    for (i=1;i<=n;i++)
        scanf("%d",&a[i]);

   quickSort(a,1,n);
   a[0]=-3211; a[n+1]=-4321;
    for (i=1;i<=n;i++)
      if ((a[i]!=a[i-1]) && (a[i]!=a[i+1])) printf("%d",a[i]);
}

 

 

posted @ 2014-04-05 11:50  achst  阅读(244)  评论(0编辑  收藏  举报