UVa156 - Ananagrams
2013-09-22 20:02
260 查看
题目地址:点击打开链接
C++代码:
C++代码:
#include <cstdio> #include <algorithm> #include <cstring> #include <cctype> using namespace std; struct MyStruct { char word[30]; char changed_s[30]; void change() { strcpy(changed_s,word); int i; int len=strlen(word); for(i=0;i<len;++i) if(isupper(changed_s[i])) *(changed_s+i)=tolower(changed_s[i]); } void sort_changed_s() { sort(changed_s,changed_s+strlen(changed_s)); } }; bool cmp_MS(MyStruct A,MyStruct B) { return strcmp(A.changed_s,B.changed_s)>=0?false:true; } const int maxsize=10000; MyStruct MS[maxsize]; struct MyStruct1 { char st[30]; }; MyStruct1 str[maxsize]; bool cmp(MyStruct1 A,MyStruct1 B) { return strcmp(A.st,B.st)>=0?false:true; } int main() { char word[30]; while(true) { if(scanf("%s",word)==EOF) return 0; int n=1; strcpy(MS[0].word,word); MS[0].change(); MS[0].sort_changed_s(); while(true) { scanf("%s",word); if(word[0]=='#') break; strcpy(MS .word,word); MS .change(); MS[n++].sort_changed_s(); } sort(MS,MS+n,cmp_MS); strcpy(word,MS[0].changed_s); int i; int num=0; int k=0; if(n==1) printf("%s\n",MS[0].word); else { for(i=1;i<n;++i) { if(strcmp(MS[i].changed_s,word)==0) { ++num; continue; } else { if(num==0) strcpy(str[k++].st,MS[i-1].word); else num=0; strcpy(word,MS[i].changed_s); } } if(num==0) strcpy(str[k++].st,MS[i-1].word); sort(str,str+k,cmp); for(i=0;i<k;++i) printf("%s\n",str[i].st); } } return 0; }
相关文章推荐
- UVA - 156 Ananagrams
- UVA 156 Ananagrams(stl,map,set)
- UVa 156 Ananagrams(STL,map)
- Ananagrams-UVA 156
- UVa-156 Ananagrams
- UVA 156(p113)----Ananagrams
- uva- 156-Ananagrams
- 经典第五章 例 5-4 UVA 156 Ananagrams(反片语)【map的应用】
- UVA - 156 Ananagrams
- UVA 156-Ananagrams(字符串排序按序输出无重复单词)
- UVa - 156 - Ananagrams(STL - 映射map)
- UVA 156 - Ananagrams (map)
- 例题5-4 UVa156 Ananagrams(STL:map)
- Uva 156 - Ananagrams
- UVA156 Ananagrams
- UVA 156 Ananagrams
- UVa 156 - Ananagrams
- UVA 156 Ananagrams(map,string的理解)
- UVA ~ 156 ~ Ananagrams(map+字符串处理)
- UVA - 156 Ananagrams