2016-07-13
UVA - 10815 Andy's First Dictionary
题目大意:输入文章,将文章中的单词按字典序排列输出。
解题思路:储存每个单词然后排序。时间复杂度比较大,容易 TLE,要优化算法,最后用了qsort才AC。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
bool judge(char c) {
if( (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') )
return true;
else return false;
}
int comp(const void *a , const void *b) {
char *_a = (char*)a;
char *_b = (char*)b;
return strcmp(_a , _b);
}
char str[50000][2000];
int main () {
char c;
int num = 0;
while ( (c = getchar()) != EOF) {
int i = 0;
if ( judge(c) ) {
while ( judge(c) ) {
if ( c >= 'A' && c <= 'Z' )
c = c - 'A' + 'a';
str[num][i++] = c;
c = getchar();
}
str[num][i] = '\0';
num++;
}
}
qsort(str , num , 2000 , comp);
cout << str[0] << endl;
for (int i = 1; i < num; i++) {
if ( !strcmp(str[i] , str[i-1]) )
continue;
else cout << str[i] << endl;
}
return 0;
}