递推算法练习.doc

递推算法练习.doc

安阳一中信息学奥赛辅导资料  PAGE \* MERGEFORMAT 2 递推算法练习 1、平面分割 (surface.pas) HYPERLINK 0/vijos/Problem_Show.asp?id=1262P1262 【问题描述】 同一平面内有n(n≤500)条直线,已知其中p(p≥2)条直线相交于同一点,则这n条直线最多能将平面分割成多少个不同的区域? 【输入格式】 两个整数n(n≤500)和p(2≤p≤n)。 【输出格式】 一个正整数,代表最多分割成的区域数目。 【输入样例】surface.in 12 5 【输出样例】surface.out 73 2、蜜蜂路线(bee.pas) HYPERLINK 0/vijos/Problem_Show.asp?id=1261P1261 【问题描述】 一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房M开始爬到蜂房N,MN,有多少种爬行路线? 【输入格式】 输入M,N的值。 【输出格式】 爬行有多少种路线??? 【输入样例】bee.in 1 14 【输出样例】bee.out 377 3、数塔问题(tower.pas) HYPERLINK 0/vijos/Problem_Show.asp?id=1263P1263 【问题描述】 设有一个三角形的数塔,顶点为根结点,每个结点有一个整数值。从顶点出发,可以向左走或向右走,如图所示: 若要求从根结点开始,请找出一条路径,使路径之和最大,只要输出路径的和。 【输入格式】 第一行为n(n10),表示数塔的层数 从第2行至n+1行,每行有若干个数据,表示数塔中的数值。 【输出格式】 输出路径和最大的路径值。 【输入样例】tower.in 5 13 11 8 12 7 26 6 14 15 8 12 7 13 24 11 【输出样例】tower.out 86 附加题:慈善的约瑟夫(josephus.pas) HYPERLINK 0/vijos/Problem_Show.asp?id=1260P1260 【问题描述】 你一定听说过约瑟夫问题吧?即从n个人中找出惟一的幸存者。现在老约瑟夫将组织一个皆大欢喜的新游戏,假设n个人站成一圈,从第1人开始交替的去掉游戏者,但只是暂时去掉(例如,首先去掉2),直到最后剩下惟一的幸存者为止。幸存者选出后,所有比幸存者号码高的人每人将得到1TK(一种货币),永久性的离开。其余剩下的人将重复以上的过程,比幸存者号码高的人每人将得到1TK后离开。经过这样的过程后,一旦人数不再减少则最后剩下的那些人将得到2TK。请你计算一下老约瑟夫一共要付出多少钱? 如图2-9,第一轮有5人,幸存者是3,所以4、5得到1TK后离开,下一轮幸存者仍然是3,因此没有人离开,所以每人得到2TK,总共要付出2+2*3=8TK。 输入:输入文件名:josephus.in输入文件包含一个整数,不超过32767。 输出:输出文件名:josephus.out,输出文件包含一个整数,不超过65535,表示总共要付出的钱数(单位为TK,不必输出)。 【样例输入与输出】 josephus.in 10 josephus.out 13

文档评论(0)

1亿VIP精品文档

相关文档