您的位置:首页 > 其它

UVa156 - Ananagrams

2013-09-22 20:02 260 查看
题目地址:点击打开链接

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: