题目描述:
小明的收集了一些木棍,并测量了每个木棍的长度,记录下来.假设小明有奇数根木棍,只有一个木棍找不到跟它一样长的另外一根木棍.请编程找出这个没有相同长度的木棍,输出它的长度.
知识点: 排序;或者用异或操作 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]); }