微信扫一扫打赏支持

单词查找树

单词查找树

 

分析:

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<string>
 4 using namespace std;
 5 int i,j,n,t,k;
 6 string a[8001];//数组可以达到32*1024=32768,一个单词一个字节 ,一个换行符2个字节
 7 string s;
 8 int main()
 9 {
10     //freopen("word.txt","r",stdin);
11     //freopen("word.out","w",stdout);
12     while(cin>>a[++n]);//读入文件中的单词并存储在数组a中
13     /*
14     while(cin>>s)
15     {
16         a[++n]=s;
17     }
18     */
19     n--;
20     for(i=1;i<n;i++)//单词从小到大排序,选排可以改为快排sort(a+1,a+1+n)
21     {
22         for(j=i+1;j<=n;j++)
23         {
24             if(a[i]>a[j])//两个单词进行交换 
25             {
26                 s=a[i];
27                 a[i]=a[j];
28                 a[j]=s;
29             }
30         }
31     } 
32     //cout<<n<<endl;
33     //for(i=1;i<=n;i++) cout<<a[i]<<endl;
34         t=a[1].length();//先累加第一个单词的长度
35         for(i=2;i<=n;i++)//依次计算每个单词对前一个单词的差 
36         {
37             j=0;
38             while(a[i][j]==a[i-1][j]&&j<a[i-1].length())
39                 j++;//求两个单词相同部分的长度
40             t+=a[i].length()-j;//累加两个单词的差length(a[i])-j 
41         } 
42         cout<<t+1<<endl;
43         return 0;    
44 } 
45  

 

 

 

 

 

 

 

posted @ 2017-08-24 22:10  范仁义  阅读(534)  评论(4编辑  收藏  举报