宁波市第31届小学生计算机程序设计初赛试题

合集下载

宁波市第31届小学生教育计算机程序设计初赛精彩试题

宁波市第31届小学生教育计算机程序设计初赛精彩试题

宁波市第31届小学生计算机程序设计初赛试题— . 选择题(每題 1 . 5 分,共3 0分。

每小题只有唯一个正确答案)1. 一个 16 位整型变量占用()个字节A.1B.2C.4D.82. 表达式 29 div 5 mod 2 + trunk(3.78)的值是()A.33B.32C.4D.53. 字母信息在计算机中最终是以数值的形式存储的,ascii 码统一规定了常用符号用哪些数值来表示,例如字母‘Z'的 ascii 码是十进制的 90,字母‘L’的 ascii 码是十进制(),A. 108B.90C.76D.754. 下列选顶中不属于音频文件格式的是()A.wav 格式B.mp3 格式C.avi 格式D.flac 格式5. 如主存容量为 32M 字节,且按字节编址,表示该主存地址至少应需要()位A.16B.20C.2D.326. 如果一棵二叉树的前序遍历是 ABDEFC.中序遍历是 DEBFAC,那么它的后序遍历是 ()A.ABCDFEB.CAFBEDC.EDFBCAD.DEFBCA7. 表达式 a*(b+c)-d 的后缀表达式是()A.abcd*+-B.abc+*d-C.abc*+d-D. -+*abcd8. 计算机所能辨认的最小信息单位是()A.字节B.位C.字符串D.(K)9. 对于下图,至少要减掉()条边,使之存在一条路径,经过图中每条边一次且仅一次A.0B.1C.2D.310. NFC 是近距离无线通讯技术,此项可以用在手机上,以下()不属于此技术在手机上的应用实例A.手机登录 wifi 刷微信B.手机机场登机验证C.手机充当大厦的门禁钥匙D.手机公交刷卡11. 己知有abcdef 六个整型变量,大小关系如下:a>b,a>c,a>d,b>f,b>c,f>d,d>c,f>e,d>e,c>e 根据以上大小关系,请分折六个整型变量第 3 大的是()A.aB.bC.dD.f12. 一片容量为 16GB 的 SD 卡能存储大约()张大小为 2MB 的码照片。

宁波市第28届中小学生计算机程序设计竞赛复赛试题(小学组)

宁波市第28届中小学生计算机程序设计竞赛复赛试题(小学组)

宁波市第28届中小学生计算机程序设计竞赛复赛试题(小学组)题目一览关于竞赛中不同语言使用限制的说明一.关于使用Pascal语言与编译结果的说明1.对于Pascal语言的程序,当使用IDE和fpc编译结果不一致时,以fpc的编译结果为准。

2.允许使用数学库(uses math子句),以及ansistring。

但不允许使用编译开关(最后测试时pascal的范围检查开关默认关闭:{$R-,Q-,S-}),也不支持与优化相关的选项。

3.本次比赛允许使用64位整数类型:int64或qword。

1.哈夫曼编码(coding)题目描述哈夫曼编码是一种编码方式,是可变字长编码的一种,由Huffman 于1952 年提出。

该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫Huffman 编码。

简单地来说,就是出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的。

现在请你模拟这样的原则对给定的一个字符串进行字母统计。

输入输入文件coding.in,只有一行,是一个字符串,由小写英文字母组成,长度不超过255 个字符。

输出输出文件coding.out,有若干行,每行有两部分组成:一个字母和该字母出现的频率,中间用一个空格分隔,并按频率高低排列,频率相同时则按字母的ASC 码的先后顺序排列。

样例输入soon样例输出o 2n 1s 12. 立方和(cubsum)题目描述现给出一个三位数,先对这个三位数的各位数字的立方求和,然后再对求出的和中的各位数字的立方求和,如此一直继续下去,判断最后能否得到一个不再变化的固定值。

如能得到一个固定值,就求出这个固定值;如果不能,则输出提示信息“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。

宁波市第22届中小学生程序设计比赛初赛试卷

宁波市第22届中小学生程序设计比赛初赛试卷

宁波市第22届中小学生程序设计比赛初赛试卷初中组●● 全部试题答案均要求写在答卷纸上,写在试卷纸上一律无效 ●●一、选择一个正确答案代码(A/B/C/D/E ),填入每题的括号内 (每题1.5分,多选无分,共30分)1.在计算机内部,一切信息存取、处理和传递的形式是( )A .ASCII 码B .BCD 码C .二进制D .十六进制E .八进制2.微型计算机的内存储器比外存储器( ).A .存储容量大B .价格便宜C .存储可靠性高D .读写速度快E .便于携带3.一台计算机的字长是( )位.A .16B .8C .32D .64E .与CPU 型号有关4.下面有关进制中的式子,正确的是( ).A .(11)10=(13)9B .(32)8÷(15)8=(2.14)8C .(21)10×(128)10=(1080)16D .(52)5-(70)3=(110)2E .(11.5)10=(1011.101)25.计算机系统由硬件系统和软件系统组成,平常我们所说的计算机软件是由程序和( )组成.A .相关文档B .相关资料C .相关工具D .相关说明E .相关平台6.人们使用高级语言编写出来的程序,一般先要翻译成为( ).A .标准程序B .翻译程序C .执行程序D .编译程序E .目标程序7.关于计算机病毒,正确的说法是( ).A . 病毒是计算机被黑客攻击后造成的B .病毒只传染给可执行文件C .如果某台电脑感染了病毒,那么它将会传染给附近的电脑D .计算机病毒的特点是:传播性、潜伏性、破坏性、通用性等E .计算机“千年虫”不是计算机病毒。

8.用计算机进行图形制作时,正在绘制的图形是存放在( )A .CPUB .ROMC .内存D .外存储器E .光盘9.在资源管理器中用鼠标选中非连续多个文件的方法是( ).A .单击文件B .SHIFT +单击文件C .CTRL +单击文件D. ALT +单击文件 E .双击文件10.既是输入设备又是输出设备的是( ).A .磁盘驱动器B .键盘C .显示器D .鼠标E .数字化仪11.因特网起源于( ).A .美国科学基金会B .美国国防部C .欧洲粒子物理实验室D .英国剑桥大学E .英特公司12.指出以下统一资源定位器各部分的名称(从左到右),/main/index.html 以下哪个正确?( ). 1 2 3 4A .1主机域名 2服务标志 3目录名 4文件名B .1服务标志 2目录名 3主机域名 4文件名C .1服务标志 2主机域名 3目录名 4文件名D .1目录名 2主机域名 3服务标志 4文件名E .1目录名 2服务标志 3目录名 4文件名13.TCP/IP 有( )层协议.A .3B .4C .5D .6E .714.请从逻辑的角度在后面的括号中填入后续数字;8, 6, 7, 5, 6, 4, ( ).A .1B .2C .3D .4E .515.下面程序段的时间复杂度为( ).For I:=2 to n doFor j:=2 to I-1 doX:=x+1; A .)(n O B .)(log 2n O C .)log (2n i O D .)(n O E .)(2n O16.一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )A .2 3 4 1 5B .5 4 1 3 2C .2 3 1 4 5D .1 5 4 3 2E .2 3 4 5 117.设数据A[10..100,20..100]以行优先的方式顺序存储,每个元素占4个字节,且已知A[10,20]的地址为1000,则A[50,90]的地址是( ).A .14350B .14240C .15340D .15350E .1520018.将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为( ).A .50B .51C .70D .71E .9819.对序列(45,36,18,53,72,30,48,93,15,36)进行快速排序,( )是执行第一趟快速排序后得到的序列.A .[36,36,18,15,30]45[48,93,72,53]B .[36,36,18, 30,15]45[48, 72,93,53]C .[36,36,18,15,45]30[48,93,72,53]D .[36,36,18,15,30] 53[48,93,72, 45]E .[36,36 ,18,15,30] 53[48,93,72, 45]20.一个有n 个顶点的无向图最多有( )边.A .1-nB .nC .2/)1(-n nD .n 2E .2)1(-n二、问题求解(每题4分,共8分)1、某校有1807个学生。

2018鄞州区中小学生程序设计竞赛小学组(C++)

2018鄞州区中小学生程序设计竞赛小学组(C++)
某二叉树的前序遍历结点访问顺序是 12473568,中序遍历的结点访问顺序是 47215386,
则其后序遍历的结点访问顺序是( )
A.24735681
B.74253681
C.24715386 D.74258631
12、以下断电之后将仍能保存数据的有( )。
A. 硬盘
B. ROM
C. 显存
D. RAM
1
15、ASCII 码的主要作用是( ) A.方便信息交换 B.方便信息存储 C.便于管理 D.便于输出
16、下列哪一种图的邻接矩阵一定是对称矩阵( )
A.有向图
B.无向图
C.AOV 网
D.AOE 网
17、有 6 个元素按 6,5,4,3,2.1 的顺序进栈,问下列哪一个不是合法的出栈序列( )
A.5,4,3,6,1,2
} cout<<ans<<endl; return 0; } 输入:7 输出:________
3、 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; unsigned long long f[81]; int main(){
2018 鄞州区中小学生程序设计竞赛 小学组(C++)
一、 单项选择题(共 20 题,每题 1.5 分,共计 30 分;每题且仅有一 个正确 选项)
1、我国第一台电子计算机于( )年试制成功
A.1953
B.1958
C.1964
D.1978
2、某台计算机的内存容量是 2018MB,这里的 2018MB 容量是指( )个字节

宁波市第32届中小学生程序设计竞赛(小学组)

宁波市第32届中小学生程序设计竞赛(小学组)

fpc boom.pas
gcc –o boom boom.c -lm
g++ -o boom boom.cpp -lm
fpc dream.pas
gcc –o dream dream.c -lm
g++ -o dream dream.cpp -lm
四. 运行内存限制
内存上限
128M
128M
256M
128M
【输入】 第一行输入两个整数 N 和 K,接下来 N 行分别输入这 N 个数字
【输出】 一个整数表示原数字串中不包含的最短子序列长度
【样例输入】 14 5 1 5 3 2 5 1 3 4 4 2 5 1 2 3 【样例输出】 3 【样例解释】
第6页 共7页
宁波市第 32 届中小学生程序设计竞赛复赛试题小学组
一个整数,最多能炸掉的僵尸数量。 【样例输入】
13 13 4 2 ############# ###..GG#GGG.# ###.#G#G#G#G# #.......#..G# #G#.###.#G#G# #GG.GGG.#.GG# #G#.#G#.#.#.# ##G...G.....# #G#.#G###.#G# #...G#GGG.GG# #G#.#G#G#.#G# #GG.GGG#G.GG# #############
第4页 共7页
宁波市第 32 届中小学生程序设计竞赛复赛试题小学组
当然炸弹要靠勇敢的小星星去放,他只能在地图中朝上下左右四个方向行进(不能斜对 角移动),他不能穿墙,也不能穿越僵尸,要保证他的安全,如下图,告诉你小星星起始位 置是第 2 行第 2 列,那么他的最佳放置炸弹位置应该是第 3 行第 2 列,最多炸到 2 个僵尸。

2013宁波小学生程序设计试卷解题报告by slzxlzw

2013宁波小学生程序设计试卷解题报告by slzxlzw

问题 E: 哈夫曼编码(coding.pas)题目描述哈夫曼编码是一种编码方式,是可变字长编码的一种,由Huffman 于1952 年提出。

该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫Huffman 编码。

简单地来说,就是出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的。

现在请你模拟这样的原则对给定的一个字符串进行字母统计。

输入输入文件coding.in,只有一行,是一个字符串,由小写英文字母组成,长度不超过255 个字符。

输出输出文件coding.out,有若干行,每行有两部分组成:一个字母和该字母出现的频率,中间用一个空格分隔,并按频率高低排列,频率相同时则按字母的ASC 码的先后顺序排列。

样例输入soon样例输出o 2n 1s 1提示【题目分析】给出一段字符串,在字符串中出现的字符按出现次数从多到少输出,出现次数一样按字母表顺序输出。

【算法分析】模拟。

开一个记录字符出现次数的数组,然后按照题意输出。

【参考程序】var ch:char;a:array['a'..'z']of longint;max,i:longint;beginwhile not eoln dobeginread(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[提交][状态][讨论版]题目描述现给出一个三位数,先对这个三位数的各位数字的立方求和,然后再对求出的和中的各位数字的立方求和,如此一直继续下去,判断最后能否得到一个不再变化的固定值。

宁波市第31届中小学生程序设计竞赛复赛试题初中组试题

宁波市第31届中小学生程序设计竞赛复赛试题初中组试题

宁波市第31届中⼩学⽣程序设计竞赛复赛试题初中组试题宁波市第31届中⼩学⽣程序设计竞赛复赛试题(初中组)⽐赛时间:2016年3⽉27⽇上午9:00-12:00(请选⼿务必仔细阅读本页内容)五.注意事项1、⽂件名(程序名和输⼊输出⽂件名)必须使⽤⼩写。

2、C/C++中函数main()的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、C语⾔64位整型输⼊输出格式请⽤%I64d(有符号)或者%I64u(⽆符号)。

4、没有其他特殊情况说明时,输⼊输出中任意两个整数之间⽤⼀个空格分隔。

1.猴⼦吃桃(eat.pas/c/cpp)【问题描述】为庆祝今年桃⼦丰收,猴村的猴⼦们举办了⼀次有趣的换桃⼦吃的游戏。

n只猴⼦(编号为1到n)从左向右站成⼀排,每只猴⼦⼿上捧着某种⼝味的⼀个桃⼦(桃⼦的⼝味⽤⼀个⼩写字母表⽰,最多26种⼝味),但是猴⼦⼿上的桃⼦可能不是⾃⼰喜欢吃的⼝味。

换桃过程共进⾏m轮,第i(1≤i≤m)轮交换给出三个整数L i,R i(1≤L i≤R i≤n)和C i,表⽰第i轮交换共进⾏C i遍,每⼀遍从第L i只猴⼦开始依次向右边的猴⼦传递⾃⼰⼿上的桃⼦,即第L i只猴⼦传递给第L i+1只猴⼦,……,第R i - 1只猴⼦传递给第R i只猴⼦,第R i只猴⼦的桃⼦传递给第L i只猴⼦。

请编程计算依次经过m轮传递后,有多少只猴⼦⼿上桃⼦的⼝味是与⾃⼰喜欢的⼝味相同?。

【输⼊】输⼊共m+4⾏。

第1⾏⼀个整数n,表⽰猴⼦的数⽬。

第2⾏n个⼩写字母,依次表⽰第1只猴⼦到第n只猴⼦⼿上捧着的桃⼦⼝味。

第3⾏n个⼩写字母,依次表⽰第1只猴⼦到第n只猴⼦喜欢吃的桃⼦⼝味。

第4⾏⼀个整数m,表⽰共进⾏m轮交换操作。

接下来m⾏,第i+4⾏三个整数L i,R i和C i,表⽰第i轮交换共进⾏C i遍,每⼀遍从第L i只猴⼦开始依次向右边的猴⼦传递桃⼦,第R i只猴⼦的桃⼦传递给第L i只猴⼦。

【输出】输出⼀⾏,⼀个整数,表⽰依次经过m轮交换后,⼿上桃⼦的⼝味与⾃⼰喜欢的⼝味相同的猴⼦数量。

宁波市第 届中小学生计算机程序设计竞赛复赛试题

宁波市第 届中小学生计算机程序设计竞赛复赛试题
第一行一个整数 N(1<=N<=100000),表示一串整数的个数 第二行用空格隔开的 N 个非负整数 第三行一个整数 M(1<=M<=100000),表示 M 次询问 接下来 M 行,每行两个整数 i 和 j(1<=i,j<=N),表示询问第 i 个到第 j 个整数的平均值, 不保证 i<j 【输出】 M 行,每行一个小数,表示平均值
输入文件名 average.in
suanpan.in
findbrush.in
输出文件名 average.out
suanpan.out
findbrush.out
内存限制
128MB
128MB
128MB
时限
1S
1S
1S
分值
100
100
100
结 果 比 较 方 全文比较(过滤行末空格及文件尾的空行)

射击 shooting shooting.pas/c/cpp shooting.in shooting.out 128MB 1S 100
【样例输入 1】 5 0 25 0 23 2 1 15 【样例输出 1】 10.000
【样例输入 2】 3 40 60 100 2 13 23 【样例输出 2】 66.667 80.000 【数据范围】
80%的数据保证 N<=1000,每个整数 Ai(0<=Ai<=1000000) 100%的数据保证 N 个整数和小于 2^63
四、注意事项
1、 文件名(程序名和输入输出文件名)必须使用小写。 2、 C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。 3、评测环境为 windows 4、关于竞赛中编程语言使用的其他规定参照中国计算机学会公布的《关于 NOI 系列赛编程 语言使用限制的规定》
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

宁波市第31届小学生计算机程序设计初赛试题— . 选择题(每題1 . 5 分,共3 0分。

每小题只有唯一个正确答案)1. 一个16 位整型变量占用()个字节A.1B.2C.4D.82. 表达式29 div 5 mod 2 + trunk(3.78)的值是()A.33B.32C.4D.53. 字母信息在计算机中最终是以数值的形式存储的,ascii 码统一规定了常用符号用哪些数值来表示,例如字母‘Z'的ascii 码是十进制的90,字母‘L’的ascii 码是十进制(),A. 108B.90C.76D.754. 下列选顶中不属于音频文件格式的是()A.wav 格式B.mp3 格式C.avi 格式D.flac 格式5. 如主存容量为32M 字节,且按字节编址,表示该主存地址至少应需要()位A.16B.20C.2D.326. 如果一棵二叉树的前序遍历是ABDEFC.中序遍历是DEBFAC,那么它的后序遍历是()A.ABCDFEB.CAFBEDC.EDFBCAD.DEFBCA7. 表达式a*(b+c)-d 的后缀表达式是()A.abcd*+-B.abc+*d-C.abc*+d-D. -+*abcd8. 计算机所能辨认的最小信息单位是()A.字节B.位C.字符串D.(K)9. 对于下图,至少要减掉()条边,使之存在一条路径,经过图中每条边一次且仅一次A.0B.1C.2D.310. NFC 是近距离无线通讯技术,此项可以用在手机上,以下()不属于此技术在手机上的应用实例A.手机登录wifi 刷微信B.手机机场登机验证C.手机充当大厦的门禁钥匙D.手机公交刷卡11. 己知有abcdef 六个整型变量,大小关系如下:a>b,a>c,a>d,b>f,b>c,f>d,d>c,f>e,d>e,c>e 根据以上大小关系,请分折六个整型变量第3 大的是()A.aB.bC.dD.f12. 一片容量为16GB 的SD 卡能存储大约()张大小为2MB 的码照片。

A.2000B.4000C. 8000D.1600013. 下列哪个不属于物联网的应用实例( )A.电脑实时显示快递车辆运动轨迹B.苹果手机小偷刷机时警察定位并抓荻C.远监控工地施工D.实况足球里的角色具备c 罗、梅西的个人能力14. 互联网其中一大优势就是可以共享资源,以下哪项活动不属于共享资源()A.为网民提供代理服务器加速流览国外网站。

B.设计一个学生信息的数据库C.QQ 传输文件D.在校网上发布最新版编程软件15. 15、三位水仙花数是指每个位上的数字的 3 次幂之和等于它木身。

(例如:1^3+5^3+3^3=153)找所有三位水仙花数程序如下,它的算法属于()for i:l to 9 do for j:=0 to 9 do for k:=0 to 9 do if(i*i*i+j*j*j+k*k*k=i*100+j*10+k) then ……A.动态规划B.贪心C.枚举D.递归16. 如果一个栈始时为字.当前栈中的元素从栈底到栈顶依次为a,b·另有元素c,d,己经出栈,则不可能的人栈顺序是()。

A.bacdB.cdabC.cadbD.dabc17. 二进制数10101 转化成十进制表示是()A.42B.21C.13D.2518. 18、己知逻辑表达式值为false 的是()a=true b=false c=false d=trueA.a and b xor c and dB.a Or b and c or dC.a xor b or c and dD.a or b xor d and c19. 计算机前端总线的英文名字是Front Side Bus,用FSB 表示.指的是将CPU 接到()的总线。

A.内存B.北桥芯片C.南桥芯片D.I/O 设备20. 第45 届全球超级汁算机500 强排行榜.于2015 年7 月公布,冠军是()A.中国“天河二号”B.美国橡树岭国家验率的“泰坦”C.日本理化学研究所的"K Computer"D.美国劳伦斯一利弗莫尔国家实验的“紅杉”二.问题求解(每理5分,共10分)1. 豆豆是个对数学非常敏感的孩子,刚学了加法,他就发现3的所有倍数个位数字都是有规律的,例如: 3,6,9,12,15,18,21,24,27,30,33,36,39,42 ....存个循环(3,6,9,2,5,8,1,4,7,0)。

等到学了乘法后,他思考这个问题:3^2016(2016个3相乘)运算结果的个位上的数字是()。

答案:2. 豆豆课余爱好之一就是玩各种自创的数字游戏,其中一种很受同学的好评,大家经常开展比赛。

这个游戏如下:5行5列的数字方阵中选取5个数,求这5 个数任意2个既不是同一行,也不能同一列。

看看谁能最先算出这5个数最大和是()。

豆豆总是能胜出。

看人的了。

15 06 14 12 20 03 11 18 03 13 06 09 14 09 14 13 12 07 16 19 22 14 08 07 14答案:三.阅读程序,求程序运行输出结果(每题8分,共32分)1.vara, b,c, d: longint;beginread(a, b, c);a:=a+b*c;b:=a-c;c:=a+b;d:=b*c-a;a:=d*(a-b);writeln('a=',a);end.【输入】:111 输出:2.vari,j:longint;a,b:array[0..20] of longint;out:array[0..200] of boolean;beginfor i:=1 to 12do read(a[i]);for i:=1 to 15do read(b[i]);for i:=1 to 12 dofor j:=1 to 15 doif a[i]=b[j] then out[a[i]]:=true;for i:=1 to 90 doif not out[i] and (i mod 8=0) thenwrite(i,' ');end.【输入】:2 17 23 28 29 37 38 48 49 58 79 1142 17 23 28 29 38 45 48 56 58 67 72 75 101 122输出:3.varj:longint;use:array[0..10] of boolean;a:array[0..10] of longint;procedure dfs( i: longint);var j:longint;beginif i>2 then beginfor j:= 1 to 2 dowrite(a[j],' ');writeln;exitend;for j:=a[i-1]+1 to 3 doIf not use[j] then beginuse[j]:=true;a[i]:=j;dfs(i+1);use[j]:=false;end;end;begindfs(1);end.输出:4.varn,i,j,t,sum:longint;a:array[0..50] of longint;f:array[0..50] of boolean;beginreadln(n);for i:= 1to n doread(a[i]);fillchar(f,sizeof (f),true);for i := 1to n doif f[i] thenbegininc(sum);t:=a[i] ;for j:=i to n doif f[j] and (t=a[j]) thenbeginf[j] := false;t:=t-1;if t=0 thenbreak;end;end;writeln(sum);end.【输入】:89 19 11 7 3 2 6 1输出:四.完善程序(前两空每空2 分,其余八空每空3 分,共28 分)1. 买书书店有个买2送1的活动:买3本书只要付较贵的2本就可以了。

举个例子:10 3 2 4 6 4 9 , 如果这样组合(10, 3, 2), (4, 6, 4) and(9),就能在第一个括号中省下2元,第二括号中省下4元,但第三个括号不能省了,因为不足3本书。

售货员是个热心肠也爱动脑筋的人,他想为每位顾客尽可能多的省钱,请你帮助她吧。

注意:不一定非要组合三本书一堆,但一堆的数量必须是1到3输入的第一行一个整数N,表示书的数量。

接下来的N行,每行包含一个整数Ci,表示每本书的价格。

输出一个数。

表示最终要为这些书付出的最小价格。

解题思路:贪心的策略,按照书费的降序排序,挑尽可能贵的2本放在一起来省去书费,反复操作,直到书少于3本样例中10 3 2 4 6 4 9 就可以这样分组:(10 9 6)、(4 4 3)、(2),很显然省去了6+3+2=9,这是最省钱的分组方案,根据这个思路,请完善以下程序varn,i:longint;a:array[0..100001] of longint;s:int64;procedure sort(l,r:longint);//sort过程实现a数组值的降序排序var i,j,x,y:longint;begini:=l; j:=r; x:=a[(l+r) div 2];repeatwhile_________ do inc(i);while x>a[j] do dec(j);if not(i>j) thenbeginy:=a[i];_________; a[j]:=y;inc(i); j:=j-1;end;until _________;if l<j then sort(l,j);if i<r then sort(i,r);end;beginreadln(n);for i:= 1 to n doread(a[i]);sort(1,n);for i:= 1 to n doif _________thens:= _________;writeln(s);end.2. 拼木棍有一些同样长的木棍,氢这些木棍随意砍成几段。

现在,他想把小木棍拼接成原来的的样子,但是忘记了自己开始时有多少根木棍和它们的的长度。

给出每段小木棍的长度,编程找出原始木棍的最小可能长度。

输入第一行为一个单独的整数N表示砍过以后的小木棍的总数。

笫二行为N个用空格隔开的正整数,表示N根小木棍的长度,输出仅一行,表示要求的原始木棍的最小可能长度。

样例输入:95 2 1 5 2 1 5 2 1样例输出:6解题思路:枚举原始木棍长度,然后验证小木棍是否能拼凑出该枚举长度的整数倍,但要充分利用题目的隐含的信息进行优化,不然会超时优化1:原始木棍长度>=最大的小木棍长度,原始木棍长度<=小木棍长度之和优化2:小木棍的长度之和一定是原始的木棍长度的倍数优化3:小木棍应该由大到小去拼凑枚举出来的原始木棍长度优化4:当每次尝试接入小木棍后,大木棍未达到要求长度时,尝试接入的下一根小木棍要和刚刚接入小木棍和长度不相等优化5:当一个小木棍接入后,刚好达到原始木棍长度,在以后的尝试中没有必要用更小的小木棍代替这个刚接入的小木棍根据以上解题思路完善如下程序varn,i,L,max,sum,j:longint;a:array[0..100] of longint;visit:array[0..100] of boolean;procedure dfs(k,now:longint);vari,last:longint;beginif (k>n) and (now=0) thenbeginwriteln(L);halt;//退出整个秤序end;if k>n then exit;last:=0;for i:=1 to n doif (not(visit[i])) and (now+a[i]<=L) and (_________)then beginvisit[i]:=true;if (_________)thenbegindfs(k+1,0);visit[i]:=false;exit;//这里的退出体现了优化5end;_________;visit[i]:=false;last:=a[i];if now=0 then exit;end;end;beginreadln(n);i:=n;while i>0 dobeginread(L);_________;a[i]:=L;i:=i-1;if L>max then max:=L;end;for i:=1 to n dofor j:=i+1 to n doif_________then //将所有木棍从大到小排序,利用优化3beginL:=a[i];a[i]:=a[j];a[j]:=L;end;for L:=max to sum do//枚举原始木棍长度L长度时由小到大枚举.利用优化1 if sum mod L=0 then //优化2dfs(1,0);end.。

相关文档
最新文档