递归与递推练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
递规与递推练习
杨辉三角形(Triangle)
【程序名称】triangle.exe
【源程序名】triangle.(pas/c/cpp)
【输入文件】triangle.in
【输出文件】triangle.out
【问题描述】
有一个数字三角是我国古代著名数学家杨辉首先提出的,这个数字三角如下图所示:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
……
现在给你一个正整数n,请你用递归算法给出杨辉的前n行。
【输入数据】
输入文件共一行,包含一个正整数n(1≤n≤20)。
【输出数据】
输出文件共n行,即杨辉三角的前n行。每行包含若干正整数,这些正整数之间用一个空格隔开(不能有多余的空格),最后一个正整数后面没有空格。
【样例】
triangle.in
4
triangle.out
1
1 1
1 2 1
1 3 3 1
多米诺骨牌(Domino)
【程序名称】domino.exe
【源程序名】domino.(pas/c/cpp)
【输入文件】domino.in
【输出文件】domino.out
【问题描述】
有N块1×2大小的骨牌需要放入一个2×N的牌盒中,请问共有多少种放法(输出总放法数的最后100位即可)。
【输入数据】
输入数据仅一个自然数N(N≤106)。
【输出数据】
输出数据共4行,每行25位,共100位。表示总放法数的最后100位。不满100位时高位用0补足。
【样例】
domino.in
5
domino.out
0000000000000000000000000
0000000000000000000000000
0000000000000000000000000
0000000000000000000000008
走楼梯(Stairs)
【程序名称】stairs.exe
【源程序名】stairs.(pas/c/cpp)
【输入文件】stairs.in
【输出文件】stairs.out
【问题描述】
有一楼梯共N阶,由于年久失修,其中有K阶台阶已经损坏(人不能在损坏的台阶上停留),已知某人一次能上一阶、两阶或三阶台阶,请问,此人从楼梯底部走到楼梯顶部,共有多少种走法。
【输入数据】
输入数据共两行,第一行包含两个自然数N(1≤N≤100)和K(0≤K<N),第二行包含K个自然数X i(1≤X i≤N),数字之间用一个空格隔开,表示损坏的台阶的序号(从楼梯底部到楼梯顶部,台阶序号依次为1~N)。
【输出数据】
输出数据仅包含一个整数,表示所有可行走法的总数。
【样例】
stairs.in
5 2
2 4
stairs.out
2
棋盘控制(Broad)
【程序名称】board.exe
【源程序名】board.(pas/c/cpp)
【输入文件】board.in
【输出文件】board.out
【问题描述】
在一个N×N的棋盘上放置K(K≤N)个中国象棋中的“車”,要求这K个“車”不能相互攻击,请问总共有多少种摆放方法。
【输入数据】
输入数据仅一行,包含两个整数N(1≤N≤20)和K,数字中间用空格隔开。
【输出数据】
输出数据仅一个整数,即总摆放方法数。
【样例】
braod.in
3 2
broad.out
18