UVa 156 - Ananagrams
2012-07-17 16:32
399 查看
题意:给出一些单词,以#结束,判断这些单词是否是ananagram。如果是按字典序输出。
思路:每个大写字母变成小写,把单词中的字母按字典序排,再把单词按字典序排序,然后判断。最后输出没有改变的单词。
思路:每个大写字母变成小写,把单词中的字母按字典序排,再把单词按字典序排序,然后判断。最后输出没有改变的单词。
#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { char s1[90]; //存放最初的单词。 char s2[90]; //存放小写排序后的单词。 int flag; //标记是否ananagram。 }word; int cmp1(const void *a, const void *b) //字母排序 { return *(char *)a-*(char *)b; } int cmp2(const void *a, const void *b) //原单词排序 { word *pa = (word *)a; word *pb = (word *)b; return strcmp(pa->s1, pb->s1); } int cmp3(const void *a, const void *b) //改过的单词排序 { word *pa = (word *)a; word *pb = (word *)b; return strcmp(pa->s2, pb->s2); } int main() { int i, j; word w[1010]; i=0; memset(w[i].s1, 0, sizeof(w[i].s1)); memset(w[i].s2, 0, sizeof(w[i].s2)); w[i].flag=0; //0是ananagram scanf("%s%*c", w[i].s1); while(strcmp(w[i].s1, "#")) { for (j=0; j<strlen(w[i].s1); j++) { if (w[i].s1[j]>='A' && w[i].s1[j]<='Z') { w[i].s2[j]=w[i].s1[j]+32; //大写变小写 continue; } w[i].s2[j]=w[i].s1[j]; } i++; memset(w[i].s1, 0, sizeof(w[i].s1)); memset(w[i].s2, 0, sizeof(w[i].s2)); w[i].flag=0; scanf("%s%*c", w[i].s1); } for (j=0; j<i; j++) //字母排序 { qsort(w[j].s2, strlen(w[j].s2), sizeof(char), cmp1); } qsort(w, i, sizeof(word), cmp3); //单词排序 for (j=0; j<i; j++) { if (strlen(w[j].s2)>1) //单个字母是ananagram { if (strcmp(w[j].s2, w[j+1].s2) == 0) { w[j].flag++; w[j+1].flag++; } } } qsort(w, i, sizeof(word), cmp2); //单词排序 for (j=0; j<i; j++) { if (w[j].flag==0) puts(w[j].s1); } return 0; }
相关文章推荐
- Uva - 156 - Ananagrams
- UVa-156-Ananagrams STL map容器的使用练习题
- STL语法——映射:map 反片语(Ananagrams,UVa 156)
- UVa 156 - Ananagrams【各种stl】
- UVa156 Ananagrams,map
- UVA_156: Ananagrams
- UVa 156 - Ananagrams
- UVa-156 - Ananagrams
- uva156 Ananagrams (stl map的使用)
- UVA156 Ananagrams
- UVA 156 - Ananagrams
- uva156 Ananagrams (stl map的使用)
- UVa 156 - Ananagrams
- Uva:156 - Ananagrams
- UVa-156 - Ananagrams
- 《算法竞赛入门经典2ndEdition 》例题5-4 反片语(Ananagrams, Uva156)
- Problem 031 ——UVa 156 - Ananagrams
- UVa 156 - Ananagrams
- uva 156 Ananagrams STL
- uva 156 Ananagrams