C++设计相应的数据结构和算法,,尽量高效的统计一篇英文文章(总单词数)里出现的所有英文单词,按照在文章中
2个回答
展开全部
用二叉平衡树就可以做到,树中每一个节点是一个单词,按照字典序比较单词的大小。按出现顺序输出的话,可以在每个节点上记录出现顺序,排序即可。复杂度O(nlogn)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
#include <algorithm>
#include <string>
#include <map>
#include <utility>
#include <fstream>
#include <cassert>
using namespace std ;
template<class _t1, class _t2>
void pairprnt( const pair< _t1, _t2 > pa )
{
cout << pa.first << " " << pa.second << endl ;
}
void WordCalc( char* pszFilename )
{
ifstream fs( pszFilename ) ;assert( fs ) ;//文件流
string str ;
map<string, int> m ;
while( fs >> str, m[str]++, fs ) ;//读入,统计,判断流状态
for_each( m.begin(), m.end(), pairprnt<string,int> ) ;//打印
}
int main()
{
WordCalc( "d:/delete/readme.txt" ) ;
}
STL makes life easy!
#include <algorithm>
#include <string>
#include <map>
#include <utility>
#include <fstream>
#include <cassert>
using namespace std ;
template<class _t1, class _t2>
void pairprnt( const pair< _t1, _t2 > pa )
{
cout << pa.first << " " << pa.second << endl ;
}
void WordCalc( char* pszFilename )
{
ifstream fs( pszFilename ) ;assert( fs ) ;//文件流
string str ;
map<string, int> m ;
while( fs >> str, m[str]++, fs ) ;//读入,统计,判断流状态
for_each( m.begin(), m.end(), pairprnt<string,int> ) ;//打印
}
int main()
{
WordCalc( "d:/delete/readme.txt" ) ;
}
STL makes life easy!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询