uva 156 Ananagrams
一次就AC了,而且做道题目用时极少,状态来了,挡都挡不住,哈哈
View Code
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> int cmp(const void *a,const void *b) { return *(char *)a - *(char *)b; } int ccmp(const void *a,const void *b) { return (strcmp((char *)a,(char *)b)); } int main() { char st[100][100], ch, _st[100][100], s[100]; int top = 0, k = 0, flag = 1, i; while((ch = getchar())) { if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) { flag = 1; st[top][k] = ch; if(isalpha(ch)) ch = toupper(ch); s[k++] = ch; } else { if(flag) { st[top][k] = '\0'; s[k] = '\0'; qsort(s,k,sizeof(s[0]),cmp); strcpy(_st[top],s); top++; k = 0; flag = 0; } } if(ch == '#') break; } for(i = 0;i < top; i++) { flag = 1; for(k = 0;k < top; k++) { if(k == i) continue; if(strcmp(_st[k],_st[i]) == 0) {flag = 0;break;} } if(flag == 0)st[i][0] = '\0'; } qsort(st,top,sizeof(st[0]),ccmp); for(i = 0;i < top; i++) if(st[i][0] != '\0') { printf("%s\n",st[i]); } return 0; }