1337:【例3-2】单词查找树
经过单词排序后,可知相邻的每两个单词之差就是需要添加的最小必要树结点。
1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int cmp(string x,string y){ 5 return x>y; 6 } 7 string s[8001]; 8 int main(){ 9 int len=0; 10 string str; 11 while(cin>>s[len++]); 12 sort(s,s+len-1); 13 int ans=1+s[0].length(); 14 for(int i=1;i<len-1;i++){ 15 int j=0; 16 while(j<min(s[i].length(),s[i-1].length())&&s[i][j]==s[i-1][j])j++; 17 ans+=s[i].length()-j; 18 } 19 cout<<ans; 20 return 0; 21 }
额外收获
- string之间的比较与长度无关,从左至右逐个字母按字典序进行比较