算法编程练习题-.pdf
算法编程:枚举法110(210)例:请你设计一个程序,用 19 这九个数字组成三个三位的平方数,要求每个数字只准使用一次。请列出所有这种组合。练习:基础一班:(周二、四中午)必做题:110、111、112、113 111、某四位数被 2,3,4,9,10 去除时,它的余数分别是1,2,3,8,9,求出所有具有这种性质的四位数。112:求满足下列条件的三位数:(1)它的各位数字不同且不为0,(2)这个数等于所有由它的各个数字所组成的两位数的和。113:打印 X到 Y之间的所有素数。(0 x30000,0y30000)114:键盘输入两个自然数,求出它们的最大公约数。(0 x30000,0y30000)115:用 09 这 10 个数不许重复拼凑出两个自然数,让它们分别是同一个数的平方和立方数。116:用 09 这 10 个数不许重复拼凑出两个自然数,让它们分别是同一个数的平方和立方数。117:把一个两位素数写在另一个两位素数这后,得到一个四位数,它能被这两个素数之和的一半整除,求出所有这样的素数对。118:求连续若干个自然数,使其之和为1000,共有多少组这样的数,并分别打印出它们的算式来。基础二班:(周一、三、五中午)必做题:210、211、214、213 211、P27 例题一模式识别的“中心”问题模式识别的一个关键问题是判别图形的“中心”,当图形经过扫描仪扫描后,得到一个实数矩阵,我们首先要找到该图形的“中心”。然后才能开始识别。设实数矩阵由 M 行 N 列组成(1m,n100),所谓的中心(i,j)是使第 i 行上边元素(不包括第 i 行)的总和与第i 行下边元素(不包括第i 行)的总和之差的绝对值最小,而且第j 列左边元素(不包括第j 列)的总和与第j 列右边元素(不包括第 j 列)的总和之差的绝对值最小。现已知一扫描所得的实数矩阵,求其“中心”。若有多个“中心”,给出最靠近左上端的一个“中心”即可。输入格式从键盘输入一个文本文件211.in,该文件第一行有两个数m、n,中间用空格格开。以下 m 行是实数矩阵,每行各有n 个实数。在每一行中,数据之间只有一个空格。每行的行首,行末无多余空格。输出格式:结果输出到屏幕上:Center=(xxx,yyy),xxx、yyy 分别表示中心的行和列。输入样例5 5 0.2 0.3 0.2 0.3 0.2 0.2 0.3 0.4 0.2 0.2 0.3 0.4 0.2 0.2 0.4 0.5 0.2 0.2 0.2 0.3 0.3 0.3 0.4 0.4 0.2 输出样例Center=(3,3)212、P31 例题二二进制数的分类。若将一个正整数化为二进制数,在此二进制数中,我们将数字 1 的个数多于数字0 的个数的这类二进制数称为A 类数,否则就称为B 类数。求出 11000 之中,全部 A、B 类数的个数。213、P32 例题三设有下列的算式:求出中的数字,并打印出完整的算式来。2 0 8 )1 214、P34 第一题破碎的项链。你有一条由N 个红色的、白色的或蓝色的珠子组成的项链(3N350),珠子是随意安排的。这里是N=29的两个例子,如图说明:第一和第二个珠子在图中已经被做记号。图(A)中的项链可以用下面的字符串表示:brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的球子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收集的不同)。确定应该在哪里打破项链来收集到最大多数的数目珠子。例:图(A)中的项链,可以收集到8 个珠子,在珠子9 和珠子 10或珠子 24 和珠子 25 之间打破项链来收集到最大多数的数目的珠子。注意:如果项链中包括有白色的珠子,当收集球子的时候,遇到的白色珠子可以被当做红色也可以被当做蓝色。表示项链的字符串将会包括三种符号r,b 和 w。请你写一个程序来确定从一条给定的项链最大可以被收集珠子数目。输入:两行。1 2 图r b b r r b r r r r b r b b b b b b r r b r b r r r r b r 1 2图b r r b b b b r w r w w r r b b r b b r r r r r r b r r w 第一行:N,为珠子的数目第二行:一串度为N 的字符串,每个字符是r,b或 w。输出:给定的项链可以被收集的珠子数目的最大值。输入样例:29 Wwwbbrwrbrbrrbrbrwrwwrbwrwrrb 输出样例:11 215、P35 第二题216、P35 第三题贪心算法例 121(221):P52例题一基础一班:必做题122、121、123 122:在 n 行 m 列的正整数矩阵中,要求从每一行中选一个数,使得选出的n 个数的和最大。123:P58第二题124:P54例题二基础二班:必做题221、222、225、227 222:P54例题二223:P55例题三224:P58第一题225:P58第二题226:P58第三题227:背包问题:有一个背包,背包容量是M=150。有 7 个物品,物品可以分割成任意大小。要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。(0M30000),(0W1000),(0P1000),物品A B C D E F G 重量(W)35 30 60 50 40 10 25 价值(P)10 40 30 50 35 40 30 输入:第一行一个数 M,表背包容量第二行至第八行,每行两个整数 W P,用空格格开.模拟法130(230)30:键盘输入两个自然数,求出它们的最大公约数。(0 x30000,0y30000)一班:必做题(130、131、132)131,P60 例题一132,键盘输入 K,计算 355/133 到小数点后的第 K 位(四舍五入到小数点后的第K位)。输出计算机的表示式.(k500)133,键 盘 输 入 一 个 十 进 制 自 然数x,把 它 转 换 成 二 进 制 数 打 印出 来。(x1000000000)二班:必做题(230、231、232、233)231:P60 例题一232:P64 第一题233:P65 第二题234:P61 例题二归纳法141(241):求最大值。输入:输入一个整数N。(N60)把 N 拆成任意多个数,并把这些数相乘。如6=3+3,而 3*3=9 将是 6 拆分的数的乘积的最大值。输入:最大的积输入样例:6 输出样例:9 输入样例:5 输出样例:6 一班:必做题:141,142 142:输入一个整数N,请计算从1N 的数据中能分解出多少个5 的因子。(N=2000000000)二班必做题:241,242,243 242:数的计算(20 分)问题描述我们要求找出具有下列性质数的个数(包含输入的自然数n):先输入一个自然数n(n=1000),然后对此自然数按照如下方法进行处理:1.不作任何处理;2.在它的左边加上一个自然数,但该自然数不能超过原数的一半;3.加上数后,继续按此规则进行处理,直到不能再加自然数为止.样例:输入:6 满足条件的数为 6(此部分不必输出)16 26 126 36 136 输出:6 243:P42第二题分治法151(251):找数。输入:第一行包括N 个从小到大排列的整数,每个整数间用空格格开。第二行为一个整数X。输出:如果能在第一行中整数中找到X,则输出 Yes!,否则输出 No!。输入样例:4 7 9 19 27 29 36 39 47 57 61 84 35 输出样例:No!一班:必做题:151,152,152:P46 例题 2 二班:必做题:251、252、253 252:P46 例题 2 253:P51 第一题