logo

您所在位置网站首页 > 海量文档  > 教学课件 > 职业教育

宁波市近三小学组决赛试题解读.ppt 25页

本文档一共被下载: ,您可全文免费在线阅读后下载本文档。

  • 支付并下载
  • 收藏该文档
  • 百度一下本文档
  • 修改文档简介
全屏预览

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
宁波市近三年小学组决赛 试题解读(部分) 胡苗坤 * 22届 试题一:最小数(100分) (源程序名:min.pas或min.c或min.cpp,编译后可执行程序名:min.exe) 【问题描述】   给定一个正整数n,请去掉其中的m个数字,使其剩下的数字按原先从左到右的相对次序组成一个新数,但该新数的值必须尽可能的小。 【输入】 输入文件min.in中只有一行,共2个整数,分别是n和m的值,中间用一个空格分隔。 【输出】 输出文件min.out中只有一行,该行只有一个整数,它是从n中去掉m个数字后所能得到的最小新数(注:如果新数的最高位是零,输出时请去掉这些零)。 【样例1】【输入】456547 1【输出】45547 【样例2】【输入】456547 3【输出】447 【样例3】【输入】1003 1 【输出】3 【数据限制】 本题共有10组测试数据,每组10分,共100分。 50%的数据, 10≤n≤2.1*109,另外50%的数据n不超过240位; 所有的数据m的值都小于n的位数。 由于正整数n的有效数位为240位,所以很自然地采用字符串类型存贮n。 那么如何决定哪s位被删除呢?是不是删除最大的那s个数字呢? [算法分析] 显然不是,大家很容易举出一些反例。 为了尽可能逼近目标,我们选取的贪心策略为:每一步总是选择一个使剩下的数最小的数字删去,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;否则删除第一个递减区间的首字符,这样删一位便形成了一个新数字串。然后回到串首,按上述规则再删下一个数字。重复以上过程s次为止,剩下的数字串便是问题的解了。 [算法分析] 例如:n=178543 s=4 删数的过程如下: n=178543 {删掉8} 17543 {删掉7} 1543 {删掉5} 143 {删掉4} 13 {解为13} 这样,删数问题就与如何寻找递减区间首字符这样一个简单的问题对应起来。这也是问题的本质。 [算法实现] 要注意一个细节性的问题,就是可能会出现字符串串首有若干0的情况,甚至整个字符串都是0的情况。 按以上贪心策略编制的程序框架如下: begin 输入n,s; while s>0 do begin i:=1; {从串首开始找} while (i<length(n)) and (n[i]<=n[i+1]) do i:=i+1; delete (n,i,1); {删除字符串n的第i个字符} s:=s-1; end; while (length(n)>1)and (n[1]=‘0’) do delete(n,1,1); {删去串首可能产生的无用零} 输出n; end. 试题二:等式(100分) (源程序名:equal.pas或equal.c或equal.cpp,编译后可执行程序名:equal.exe) 【问题描述】 有一个未完成的等式:1 2 3 4 5 6 7 8 9=N 当给出整数N的具体值后,请你在2,3,4,5,6,7,8,9这8个数字的每一个前面,或插入一个运算符号“+”号,或插入一个运算符号“-”号,或不插入任何运算符号,使等式成立,并统计出能使等式成立的算式总数,若无解,则输出0。 例如:取N为108时,共能写出15个不同的等式,以下就是其中的二个算式: 1+23+4+56+7+8+9=108 123-45+6+7+8+9=108 【输入】输入文件equal.in中只有1个数,即整数N的值。 【输出】输出文件equal.out只有一行,该行只有1个数,表示能使等式成立的算式总数。【样例】【输入】 108【输出】 15 【数据限制】 本题共有10组测试数据,每组10分,共100分,对于所有的n,-30000≤n≤1000000 [算法分析] 本题很起来很复杂,但只要仔细分析一下题目要求,其实就是在 ‘1 2 3 4 5 6 7 8 9’这个字符串中穷举插入’+’,’-’,’ ’三个操作符,如新字符串‘1+23+4+56+7+8+9’,然后把生成后的新字符串进行求值,判断是否与N相等,相等的话就累加一。 所以此题的关键成了如何计算新字符串的值。 var s:string; n,result:integer; i1,i2,

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片

“原创力文档”前称为“文档投稿赚钱网”,本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。原创力文档是网络服务平台方,若您的权利被侵害,侵权客服QQ:3005833200 电话:19940600175 欢迎举报,上传者QQ群:784321556