- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2013宁波小学生程序设计试卷解题报告byslzxlzw讲述
问题 E: 哈夫曼编码(coding.pas)
题目描述
哈夫曼编码是一种编码方式, 是可变字长编码的一种, 由 Huffman 于 1952 年提出。该方法完全依据字符出现概率来构造异字头的平均长度最短的码字, 有时称之为最佳编码,一般就叫 Huffman 编码。简单地来说,就是出现概率高的字符使用较短的编码, 反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低, 从而达到无损压缩数据的目的。现在请你模拟这样的原则对给定的一个字符串进行字母统计。
输入
输入文件 coding.in,只有一行,是一个字符串,由小写英文字母组成,长度不超过255 个字符。
输出
输出文件 coding.out,有若干行,每行有两部分组成:一个字母和该字母出现的频率,中间用一个空格分隔,并按频率高低排列,频率相同时则按字母的 ASC 码的先后顺序排列。
样例输入
soon
样例输出
o 2
n 1
s 1
提示
【题目分析】
给出一段字符串,在字符串中出现的字符按出现次数从多到少输出,出现次数一样按字母表顺序输出。
【算法分析】
模拟。开一个记录字符出现次数的数组,然后按照题意输出。
【参考程序】
var ch:char;
a:array[a..z]of longint;
max,i:longint;
begin
while not eoln do
begin
read(ch);
inc(a[ch]); //记录出现次数
if a[ch]max then max:=a[ch]; //记录出现最大出现次数
end;
for i:=max downto 1 do //按出现次数从大到小输出
for ch:=a to z do //相同的按字母表顺序输出
if a[ch]=i then writeln(ch, ,a[ch]);
end.
问题 F: 立方和(cubsum.pas)
时间限制: 1 Sec??内存限制: 128 MB提交: 37??解决: 21[提交][状态][讨论版]
题目描述
现给出一个三位数, 先对这个三位数的各位数字的立方求和,然后再对求出的和中的各位数字的立方求和, 如此一直继续下去, 判断最后能否得到一个不再变化的固定值。如能得到一个固定值,就求出这个固定值;如果不能,则输出提示信息“error” 。另外请注意,在求解过程中,若某一次求和过程中得到的值超过三位数,则取该数的低三位继续往下运算……例如,对于三位数 111,则第一次计算应是 1×1×1+1×1×1+1×1×1=3,第二次计算应是 0×0×0+0×0×0+3×3×3=27,第三次计算应是0×0×0+2×2×2+7×7×7=351,第四次计算应是 3×3×3+5×5×5+1×1×1=153,第五次计算应是 1×1×1+5×5×5+3×3×3=153,与第四次计算的结果相同,这时可不再计算,输出固定值 153。亲爱的同学,请你也来计算一下。
输入
输入文件 cubsum.in,只有一行,是一个三位数。
输出
输出文件 cubsum.out,也只有一行,如能得到一个固定值,则输出这个固定值;如不能,则输出一个提示信息“error” 。
样例输入
111
样例输出
153
提示
输入样例 2:102输出样例 2:error
【题目分析】
对一个三位数字(多于三位取最低三位,少于三位添零计算)进行各个数位立方求和。判断是否最后变成一个固定的数。
【算法分析】
对于一个固定不变的数,则是与前一次相同,就是求立方和前相同。而没有固定值的数,则是在前面所有变化的数中出现过(当然排除前一次),因为会形成一个循环。像这样我们只要开一个记录是否出现过某个数的数组(0..1000)(不包括前一次),如果出现过就没有固定值。最坏情况也就o(1000),是个常数。
【参考程序】
var x,y,t:longint;
a:Array[0..10000]of boolean;
begin
read(x);
repeat
t:=x; //保存一遍,因为下面x会变
y:=sqr(x mod 10)*(x mod 10); //求立方和
x:=x div 10;
y:=y+sqr(x mod 10)*(x mod 10);
x:=x div 10;
y:=y+sqr(x mod 10)*(x mod 10);
if y=t then begin writeln(y);halt;end; //求立方和与前一次相等就输出。
if a[y] then begin writel
您可能关注的文档
- 20130719国家科技计划经费管理政策培训讲述.ppt
- 高中化学2.1.1元素与物质的分类物质的分类鲁科版必修1.ppt
- 201308010314计科3班王操讲述.doc
- 高中化学实验部分各单元知识及典型习题.doc
- 2016财经法规与会计职业道德第一章第六节概要.ppt
- 20131112新版有机化学含氮和含磷化合物讲述.ppt
- 高中历史同步测试卷(六)第四单元近代中国反侵略、求民主的潮流(A卷).doc
- 2016青岛李沧路小学古诗词考级(带拼音打印版)145首古诗词概要.doc
- 高中历史同步测试卷(十)专题六罗斯福新政与当代资本主义(B卷).doc
- 高中历史同步测试卷(四)北宋王安石变法.doc
文档评论(0)