23,405
社区成员
发帖
与我相关
我的任务
分享
* 6. 著名的菲波拉契(Fibonacci)数列,其第一项为0,第二项为1,从第三项开始,其每一项都是前两项的和。编程求出该数列前N项数据。
0 1 1 2 3 5 8 13
* 7. 求两个数的最大公约数。
* 8. 求两个数的最小公倍数。
9. 输入一个数,求这个数的各位数字之和。
10. 角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。
求经过多少次可得到自然数1。
如:输入22,
输出 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
STEP=16
11. 将十进制转换为二进制。
* 13. 梯有N阶,上楼可以一步上一阶,也可以一次上二阶。编一个程序,计算共有多少种不同的走法。
* 14. 某人写了n封信和n个信封,如果所有的信都装错了信封。求所有的信都装错信封共有多少种不同情况?
* 15. 给出一棵二叉树的中序与后序排列。求出它的先序排列。
16.1 求把一个整数n无序划分成k份互不相同的正整数之和的方法总数并输出全部结果。
16.2 求把一个整数n有序划分成互不相同的正整数之和的方法总数并输出全部结果。
* 17.1 已知一个一维数组A。 又已知一整数M。如能使数组A中任意几个元素之和等于M,则输出YES,反之则为NO。
* 17.2 已知一个一维数组A。 又已知一整数M。如能使数组A中任意几个元素之和等于M,则输出全部符合条件的元素组(有序),反之则为NO。
* 18. 要求找出具有下列性质的数的个数(包含输入的自然数n):
先输入一个自然数n(n<=500),然后对此自然数按照如下方法进行处理:
①. 不作任何处理;
②. 在它的左边加上一个自然数,但该自然数不能超过原数首位数字的一半;
③. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.
样例: 输入: 6
满足条件的数为 6
16
26
126
36
136
输出: 6
* 19. 用递归的方法求N个数中最大的数及其位置。
* 20. 写出折半查找的递归算法。
* 21. 快速排序法。
思考题 1、数学宝塔,从最顶上走到最底层,每次只能走到下一层的左边或右边的数字,求出使所走到的所有数字之和为60的途径。
7
4 6
6 9 3
6 3 7 1
2 5 3 2 8
5 9 4 7 3 2
6 4 1 8 5 6 3
3 9 7 6 8 4 1 5
2 5 7 3 5 7 8 4 2
2、 汉诺塔问题:设有三个塔座,依次命名为x,y,z。有z个直径不同的圆盘,由小到大依次编号为1、2、……,n。
开始时,它们全部按递减的次序插在塔座上。现要求按下列规则把n个圆盘按次序插放在z塔座上。
(1)、每次只能移动一个圆盘;
(2)、圆盘可以从任一个塔座上移到另一个塔座上;
(3)、任何时刻都不能把一个较大的圆盘压在较小的圆盘上。
有N个硬币(N为偶数)正面朝上排成一排,每次将N-1个硬币翻过来放在原位置,不断地重复上述过程,直到最后全部硬币翻成反面朝上为止。
编程让计算机把翻硬币的最简过程及翻币次数打印出来(用*代表正面,用0代表反面)。
* Problem 11: 谷仓的安保 [Traditional, 2005]
Farmer John给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛安排
一个有效的密码。一个有效的密码由L(3 <= L <= 15)个小写字母(来自传统的拉丁
字母集'a'...'z')组成,至少有一个元音('a', 'e', 'i', 'o', 或者 'u'),至少
两个辅音(除去元音以外的音节),并且有按字母表顺序出现的字母(例如,'abc'是
有效的,而'bac'不是) 。
给定一个期望长度L和C个小写字母,写一个程序,打印出所有的长度为L、能由这
些字母组成的有效密码。密码必须按字母表顺序打印出来,一行一个。
题目名称: passwd
输入格式:
* 第一行: 两个由空格分开的整数,L和C
* 第二行: C个空格分开的小写字母,密码是由这个字母集中的字母来构建的。
输入样例 (文件 passwd.in):
4 6
a t c i s w
输入详细说明:
由从给定的六个字母中选择的、长度为4的密码。
输出格式:
* 第一至?行: 每一个输出行包括一个长度为L个字符的密码(没有空格)。输出行必
须按照字母顺序排列。
输出样例 (文件 passwd.out):
acis
acit
aciw
acst
acsw
actw
aist
aisw
aitw
astw
cist
cisw
citw
istw
Problem 12: "跳房子" [Hal Burch, 2005]
奶牛们按不太传统的方式玩起了小孩子们玩的"跳房子"游戏。奶牛们创造了
一个5x5的、由与x,y轴平行的数字组成的直线型网格,而不是用来在里面跳
的、线性排列的、带数字的方格。
然后他们熟练地在网格中的数字中跳:向前跳、向后跳、向左跳、向右跳
(从不斜过来跳),跳到网格中的另一个数字上。他们再这样跳啊跳(按相同规
则),跳到另外一个数字上(可能是已经跳过的数字)。
一共在网格内跳过五次后,他们的跳跃构建了一个六位整数(可能以0开头,
例如000201)。
求出所有能被这样创造出来的不同整数的总数。
问题名称: numgrid
输入格式:
* 第1到5行: 这样的网格,一行5个整数
输入样例 (文件 numgrid.in):
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 2 1
1 1 1 1 1
输出格式:
* 第1行: 能构建的不同整数的总数
输出样例 (文件 numgrid.out):
15
输出详细说明:
111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112,
121211, 121212, 211111, 211121, 212111和 212121 能够被构建。没有其它可
能的数了。