比赛 |
20160407树结构练习 |
评测结果 |
AAAAAAAAAA |
题目名称 |
单词查找树 |
最终得分 |
100 |
用户昵称 |
ミント |
运行时间 |
1.748 s |
代码语言 |
C++ |
内存使用 |
0.35 MiB |
提交时间 |
2016-04-07 18:55:38 |
显示代码纯文本
#include <fstream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
ifstream fin("trie.in");
ofstream fout("trie.out");
const int Maxn = 520 + 10000;
const int Maxm = 63 + 2;
string Str[Maxn];
int N, Ans = 0;
void Init()
{
//memset(Str, "", sizeof(Str));
return ;
}
void Read()
{
int i = 1;
while(!fin.eof())
{
fin>>Str[i];
i++;
}
N = i;
return ;
}
void Swap_String(string &X, string &Y)
{
string Temp = X;
X = Y;
Y = Temp;
return ;
}
bool Cmp_String(string X, string Y)
{
//if(X.length()>Y.length())
//return true;
return X > Y;
}
void Work()
{
//Bubble Sort;
for(int i=2;i<=N;i++)
for(int j=2;j<=N;j++)
if(Cmp_String(Str[j-1], Str[j]))
Swap_String(Str[j-1], Str[j]);
for (int i=1;i<=N;i++)
for (int j=0;j<Str[i].length();j++)
if (Str[i][j]!=Str[i-1][j])
{
Ans += Str[i].length() - j;
break;
}
Ans += 1;
return ;
}
void Write()
{
fout<<Ans<<endl;
//for(int i=1;i<=N;i++)
//fout<<Str[i]<<endl;
return ;
}
int main()
{
Init();
Read();
Work();
Write();
fin.close();
fout.close();
return 0;
}