记录编号 |
29816 |
评测结果 |
AAAAAAAAAA |
题目名称 |
背诵单词 |
最终得分 |
100 |
用户昵称 |
Truth.Cirno |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.005 s |
提交时间 |
2011-10-26 09:47:17 |
内存使用 |
0.26 MiB |
显示代码纯文本
#include <cstdio>
#include <cstring>
using namespace std;
int len[100];
char word[100][30];
void swap(int a,int b)
{
int i,maxlen,temp;
temp=len[a];
len[a]=len[b];
len[b]=temp;
maxlen=(len[a]>len[b])?len[a]:len[b];
for (i=0;i<maxlen;i++)
{
temp=word[a][i];
word[a][i]=word[b][i];
word[b][i]=temp;
}
}
bool checked(int a,int b)
{
int i,minlen;
bool abigger;
minlen=(len[a]<len[b])?len[a]:len[b];
for (i=0;i<minlen;i++)
if (word[a][i]<word[b][i])
{
abigger=false;
break;
}
else if (word[a][i]>word[b][i])
{
abigger=true;
break;
}
if (i==minlen)
if (len[a]<len[b])
abigger=false;
else
abigger=true;
if (abigger)
{
swap(a,b);
return(false);
}
return(true);
}
int main(void)
{
freopen("letter.in","r",stdin);
freopen("letter.out","w",stdout);
int i,j,n;
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%s",&word[i]);
len[i]=strlen(word[i]);
for (j=i;j>0;j--)
if (checked(j-1,j))
break;
}
for (i=0;i<n;i++)
printf("%s\n",word[i]);
fclose(stdin);
fclose(stdout);
return(0);
}