好学IT学院:IT信息技术分享交流平台
标签:C++  来源:互联网  作者:一鹤  发布时间:2009-05-17  ★★★加入收藏〗〖手机版
摘要:原题要求用c++做的,不过用模拟精灵比较快,但未仔细分析优化。第一题 连续正整数(10分)题目描述:一个正整数有可能可以被表示为n(n=2)个连续正整数之和,如:15=1+2+3+4+515=4+5+615=7+8请编写程序,根据输入的任何……

第四题 低频词过滤(40分)

题目描述:请编写程序,从包含大量单词的文本中删除出现次数最少的单词。如果有多个单词都出现最少的次数,则将这些单词都删除。

输入数据:程序读入已被命名为corpus.txt的一个大数据量的文本文件,该文件包含英文单词和中文单词,词与词之间以一个或多个whitespace分隔。(为便于调试,您可下载测试corpus.txt文件,实际运行时我们会使用不同内容的输入文件。)

输出数据:在标准输出上打印删除了corpus.txt中出现次数最少的单词之后的文本(词与词保持原来的顺序,仍以空格分隔)。

评分标准:程序输出结果必须正确,内存使用越少越好,程序的执行时间越快越好。

print(str);

tab = string.split( str ," "); --把多行拆分到一个数组

tab2 = {};

for k,v in pairs(tab) do
if(tab2[v])then
tab2[v] = tab2[v] + 1; --这个关键字出现的次数加一
else
tab2[v] = 1;
end;
end;

--取得取出最低频率单司的出现次数
min = 999999999999999;
for k,v in pairs(tab2) do
if(v < min)then min = v end;
end;

for k,v in pairs(tab2) do
if(v == min)then --删除低频单词
str = string.gsub(str,k,"");
end;
end;

print("");
print("出现最少的次数"..min);
print("上面的文本分析以后的结果");
print(str);

delay( _CMD_LOOP )

  • 好学触屏公众号虎力全开、杨帆起航!
  • 好学考试H5触屏版开放内测