Description
Mr.zhou喜欢收集长度为10的字符串,并且同样的字符串总是收集偶数个。有一天,他丢失了一个,由于他收集的太多,他无法确定丢失的是哪一个。对此,集训队的各位大牛也表示无能为力,请你帮Mr.zhou找到他丢失的字符串。
Input
一个整数N (1 =< N <= 499999),N是奇数,表示Mr.zhou丢失一个字符串后剩余的字符串的个数。
接下来N行是Mr.zhou剩余的字符串
接下来N行是Mr.zhou剩余的字符串
Output
输出一行,一个长度为10的Mr.zhou丢失的字符串
Sample Input
5 svyzshitjq jmbdutpigq ixogzmfcem svyzshitjq jmbdutpigq
Sample Output
ixogzmfcem
思路:
先把字符串排序,再两个两个比较
参考代码:
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> using namespace std; char a[500000][15]; void quicksort(char s[][15],int left,int right) //快排 { int i=left,j=right,p=left; char temp[100]; strcpy(temp,s[left]); while(i<j) { while(strcmp(s[j],temp)>=0&&j>=p)j--; if(j>=p)strcpy(s[p],s[j]),p=j; while(strcmp(s[i],temp)<=0&&i<=p)i++; if(i<=p)strcpy(s[p],s[i]),p=i; } strcpy(s[p],temp); if(p-left>1)quicksort(s,left,p-1); if(right-p>1)quicksort(s,p+1,right); } int main() { int n; int i=0,j=0; cin>>n; while(n--) scanf("%s",a[i++]); quicksort(a,0,i-1); for(j=0;j<i;j+=2) //两两比较 if(strcmp(a[j],a[j+1])) { puts(a[j]); break; } return 0; }