算法题目集
题目不全,图片缺省,更多请下载:
链接: https://pan.baidu.com/s/1IF6gNuSGRbAkAuIFq79V8Q 提取码: rfpu
信息工程学院算法分析实践环节习题集--2019年
序号 |
项目名称 |
任务描述 |
设计要求 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. |
搜索图中最小控制顶点集合 |
读取文件(网络),设计算法求解最小控制顶点集合。文件中数据格式如下: A B B C C D B D
每一行表示图的两个顶点,且两个顶点之间有一条边。算法: Input:图文件 Output:最小控制顶点集合 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2. |
求解最大的双边聚类的子矩阵 |
算法输入: 存放矩阵的文件,例如图所示的文件为: 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0
输出所有的双边聚类矩阵 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3. |
图聚类的贪心算法 |
|
算法输入: 存放图的文件,例如图的文件格式如下: A B B C C D B D 每一行表示图的两个顶点,且两个顶点之间有一条边.
算法: Input:图文件 Output:图中所有的内聚性最大的cluster. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4. |
最大匹配率问题 |
|
Input:两组图 Output:输出最大匹配率
两个图文件格式如下: A B C D E F G H I 每一行表示一个子图
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5. |
简单数据集跳跃显露模式挖掘算法 |
跳跃显露模式是指在样本的一个类别上发生次数为0,在另外一个类别上发生次数大于等于一个支持度计数阈值的模式。 例如下表中数据,假定。那么在类别为上的跳跃显露模式有:,
|
利用Java语言或者C语言实现给定数据集、给定支持度阈值的所有跳跃显露模式。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6. |
简单数据集频繁关闭模式挖掘算法 |
频繁模式是指在数据集中,出现的次数大于等于给定阈值的项集。如下表所示的数据集,假设。频繁模式:,,, …….., 等 对于模式,如果不存在模式,. 使得包含的事物和包含的事务(TID)相同。那么就是一个关闭频繁模式。 例如,假设,就是一个关闭频繁模式。
|
利用Java语言或者C语言实现给定数据集、给定支持度阈值的所有的频繁关闭 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7. |
最少个数运算符问题求解算法 |
关于整数的二元运算#定义为 (X # Y) = 十进制整数X的各位数字之和 * 十进制整数Y的最大数字+Y的最小数字 例如,(9 # 30)=9*3+0=27. 对于给定的十进制X和K,由X和#运算可以组成各种不同的表达式.试设计一个算法,计算由X和#运算组成的值为k的表达式最少需要用多少个#预算。 |
利用Java实现所要求的算法,开发一个GUI界面,接受两个数据X和K, 然后在界面上输出需要#的个数。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8. |
放行路线选择算法 |
设有n个城市(或者景点),今从某市出发遍历各城市,使之旅费最少(即找出一条旅费最小的路径) 输入:各城市间的旅费表有输入文件提供 输出:旅费最少的一条路径及总费用。 |
利用Java, C实现所要求的算法。 要求:设计一个图形化界面,读入文件后把N个城市的带权(花费)显示在界面上,经过求解后把旅费最小的路径求出来,并显示在界面上 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9. |
N色方柱问题 |
设有n个立方体,每个立方体的每一面用红、黄、蓝、绿等n种颜色之一染色。要把这n个立方体叠成一个方形柱体,使得柱体的4个侧面的每一侧均有n种不同的颜色。试设计一个回溯算法,计算出n个立方体的一种满足要求的叠置方案。 编程任务: 对于给定的n个立方体以及每个立方体各面的颜色,计算出n个立方体的一种叠置方案,使得柱体的4个侧面的每一侧均有n中不同的颜色。 数据输入: 由文件input.txt给出输入数据。第1行有1个正整数n,0<n<27,表示给定的立方体个数和颜色均为n。第2行是n个大写英文字母组成的字符串。该字符串的第k个字符代表第k种颜色。接下来的n行中,每行有6个数,表示立方体各面的颜色。立方体各面的编号如图1所示:
图1 图1中F表示前面,B表示背面,L表示左面,R表示右面,T表示顶面,D表示底面。相应地,2表示前面,3表示背面,0表示侧面,1表示右面,5表示顶面,4表示底面。 例如,在示例输出文件中,第3行的6个数0, 2 , 1, 3, 0, 0分别表示第1个立方体的左面的颜色为R,右面的颜色为B,前面的颜色为G,背面的颜色为Y,底面的颜色为R,顶面的颜色为R. 结果输出:将计算的n个立方体的一种可行的叠置方案输出到文件output.txt。每行6个字符,表示立方体个面的颜色。如果不存在所要求的叠置方案,输出“No Solution” 输入文件示例输出文件示例 Input.txt output.txt 4 RBGYRR RGBY YRBGRG 0 2 1 3 0 0 BGRBGY 3 0 2 1 0 1 GYYRBB 2 1 0 2 1 3 1 3 3 0 2 2 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10. |
最大团问题的回溯算法 |
(1) 给定无向图G=(V,E)。如果,且对任意有,则称U是G的完全子图。G的完全子图U是G的团,当且仅当U不包含在G的更大的完全子图中。G的最大团是指G中所含顶点数最多的团。 (2) 使用回溯算法的思想,设计一个解决该问题的算法。 |
(1)设计一个界面,显示产生的无向图。(至少有5个顶点) (2)实现回溯法的设计思想。 (3)在输出界面,显示结果。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
11. |
最佳调度问题的回溯算法 |
(1) 有n个任务由k个可并行工作的机器完成。完成任务i需要的时间为Ti。找出完成这n个任务的最佳调度,使得完成全部任务的时间最少。 (2) 使用回溯算法的思想,设计一个解决该问题的算法。 |
(1)用文件导入每个任务所需要的时间Ti。(至少10个任务) (2)实现回溯法 (3)设计一个输出界面,输出调度方案。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12. |
最佳调度问题的分支限界算法 |
(1)有n个任务由k个可并行工作的机器完成。完成任务i需要的时间为Ti。找出完成这n个任务的最佳调度,使得完成全部任务的时间最少。 (2)使用分支限界算法的思想,设计一个解决该问题的算法。 |
(1)用文件导入每个任务所需要的时间Ti。(至少10个任务) (2)实现分支限界算法的设计思想。 (3)设计一个输出界面,输出调度方案。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13. |
最短行驶路线问题 |
给定一个的矩形网格,设其左上角为起点S。一辆汽车从起点S出发驶向右下角终点T。网格边上的数字表示距离。在若干网格点处设置了障碍,表示该网格点不可到达。试设计一个算法,求出汽车从起点S出发到达终点T的一条行驶路程最短的路线 |
(1)设计一个界面。 (2)实现动态规划算法的设计思想。 (3)在界面上,显示最佳方案。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14. |
最优旅行路线问题 |
给定一张航空图,图中的定点表示城市,边表示城市间的直通航线。设计一个算法,计算出一条满足下述约束条件且含城市最多的旅行路线。 (1) 从最西端的城市出发,单方向由西到东到达最东端的城市。然后,再单方向由东向西飞回起点(可途径若干城市) (2) 出起点城市外,每个城市最多只经过一次。 |
(1)设计一个界面。 (2)实现动态规划算法的设计思想。 (3)在界面上,显示最佳方案。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
15. |
租用游艇问题 |
长江游艇俱乐部在长江上设置了n个游艇出租站1,2,……,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),。设计一个算法,计算出从游艇出租站1到游艇出租站n所需要的最少租金。 |
(1)设计一个界面。 (2)实现动态规划算法的设计思想。 (3)在界面上,显示最佳方案。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16. |
抓住那头牛问题的求解算法
|
描述: 农场主约翰的牛跑了,他被告知了牛的具体位置,他想要尽快抓住它。他现在在数轴上一点N(0<=N<=10000),他的牛在点K(0<=K<=10000)。约翰有两种移动方式:走路和远程托运。 走路:约翰可以在一分钟内从点X移动到点X-1或X+1。 远程托运:约翰可以在一分钟内从点X移动到点2X。 假定这头牛不知道它的主人在抓它,丝毫不移动,求约翰最短用多少时间抓到它。假定约翰的活动范围在0~10000之间。 输入: 输入仅一行:两个用空格隔开的整数,N和K。 输出: 输出仅一行:约翰抓住这头牛所需的最少时间,以分钟计。 输入样例: 5 17 输出样例: 4 |
提示 样例中约翰抓住这头牛花费时间最少的路径为5-10-9-18-17, 花费了4分钟。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
17. |
收集样本问题 |
机器人Rob在一个有个方格的方形区域F中收集样本,(i,j)方格中样本的价值为v(i,j)。Rob从方形区域F的左上角A点出发,向下或向右行走,直到右下角的B点,在走过的路上,收集方格中的样本。Rob从A点到B点共走2次,试找出Rob的2条行走路径,使其取得的样本总价值最大。 |
(1) 给定方形区域F中的样本分布 (2) 给出图形化收集样本路径 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
18. |
棋盘分割问题
|
描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。(每次切割都只能沿着棋盘格子的边进行)
原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差最小。 输入:第1行为一个整数n(1
< n < 15)。 输出: 仅一个数,为均方差O'(四舍五入精确到小数点后三位)。 输入样例 3 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 3 输出样例 1.633 提示 求均方差的最小值即是求方差的最小值,方差为
由于均是不变量,所以求方差的最小值就是求分割后各块得分平方和的最小值。
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
19. |
通信系统最优构建问题 |
描述 最近我们要构建一个通信系统。这个系统包含若干个设备,对于每个设备,我们都可以从不同的商家购买。从不同商家购买的同种设备,在最大带宽和价格上都有所区别。 整个系统的带宽B是指它包含的所有设备的最大带宽的最小值。整个系统的代价P是指,它包含的所有设备的价格之和。我们的目标是确定一个购买方案,使得整个系统的性价比B/P最高。 输入 输入包含多行。第1行为n(1<=n<=100)表示系统包含的设备数,接下来的n行格式是这样的,第i+1(1<=i<=n)行的第1个数为mi(1<=mi<=100),表示提供第i种设备的商家数,接下来在这一行内便是mi对个正整数,分别表示对应商家提供的此种商品的最大带宽和价格。 输出 输出为一行,是一个3位浮点小数B/P即最优购买方案下系统的最优性价比。 输入样例 3 3 100 25 150 35 80 25 2 120 80 155 40 2 100 100 120 110 输出样例 0.649 。 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
20. |
字符串距离的求解算法 |
开发用于计算两个字符串间的编辑距离,LCS距离和N-gram距离的函数。 (1)编辑距离 字符串a和b的编辑距离ED(i,j)表示把字符串a转换成b所需要的最少操作次数,这些操作可以是:插入一个字符,删除一个字符,替换一个字符。显然,ED(i,j)越小,a,b越相似。ED(i,j)可按下列公式计算: 字符串a和b的LCS(Longest Common Subsequence)相似度是a和b间的最大相同子串的长度。显然LCS(i,j)越大,a,b越相似。a,b的LCS相似度定义如下:
设Ngram(a) 是字符串a中长度为N的子串的集合。两个字符串a,b的N-gram相似度NG(a,b)定义如下:
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
21. |
推箱子问题 |
推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个5×5的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,因此如果箱子被推到一个角上那么箱子就不能再被移动了,如果箱子被推到一面墙上,那么箱子只能沿着墙移动.同时,房间里头还有若干障碍物(用阴影部分表示)。 现在给定房间的结构,箱子的位置,搬运工的位置和箱子要被推去的位置,请你计算出搬运工至少要推动箱子多少格. (1)从文件中读出房间布局; (2)计算出推箱子的最小格数; |
主要功能: (1)从文件中读出题目的输入; (2)向屏幕上打印出题目的计算结果; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
22. |
棋盘问题 |
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 输入:每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n 随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。 输出:对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证C<2^31)。
输入样例: 2 1 #. .#
4 4 ...# ..#. .#.. #...
输出样例: 2 1 |
主要功能: (1)从文件中读出题目的输入; (2)向屏幕上打印出题目的计算结果; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
23. |
六数码问题 |
现有一两行三列的表格如下: A B C D E F
把1、2、3、4、5、6六个数字分别填入A、B、C、D、E、F格子中,每个格子一个数字且各不相同。每种不同的填法称为一种布局。如下:
1 3 5 2 4 6 布局1
2 5 6 4 3 1 布局2
定义α变换如下:把A格中的数字放入B格,把B格中的数字放入E格,把E格中的数字放入D格,把D格中的数字放入A格。 定义β变换如下:把B格中的数字放入C格,把C格中的数字放入F格,把F格中的数字放入E格,把E格中的数字放入B格。
问:对于给定的布局,可否通过有限次的α变换和β变换变成下面的目标布局:
1 2 3 4 5 6
|
输入:本题有多个测例,第一行为输入测例的个数n,下面是n行测例,每个测例的输入是1到6这六个数字的一个排列,空格隔开,表示初始布局ABCDEF格中依次填入的数字。
输出:每个输出占一行。输出转换到目标格局需要变换的最少次数。(若不能转换则输出-1)
输入样例: 2 2 5 3 1 4 6 2 3 6 1 5 4
输出样例: 1 2
注意不能转换到目标格局的情况应输出-1; 输出格式为:printf(“%d\n”,min); |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
24. |
图像周长的求解算法 |
给一个用 . 和X表示的图形,图形在上、下、左、右、左上、左下、右上、右下8个方向都被看作是连通的,并且图像中间不会出现空洞,求这个图形的边长。 输入: 首先给出m、n、x、y四个正整数,下面给出m×n的图形,x、y表示点击的位置,全0表示结束。 输出: 点击的图形的周长。 输入样例: 2 2 2 2 XX XX 6 4 2 3 .XXX .XXX .XXX ...X ..X. X... 0 0 0 0 输出样例: 8 18 |
主要功能: (1)从文件中读出题目的输入; (2)向屏幕上打印出题目的计算结果; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
25. |
农场灌溉问题 |
(OJ1144)一农场由图所示的十一种小方块组成,蓝色线条为灌溉渠。若相邻两块的灌溉渠相连则只需一口水井灌溉。
输入:给出若干由字母表示的最大不超过50×50具体由(m,n)表示,的农场图
输出:编程求出最小需要打的井数。每个测例的输出占一行。当M=N=-1时结束程序。
输入样例: 2 2 DK HF 3 3 ADC FJK IHE -1 -1
输出样例: 2 3 |
主要功能: (1)从文件中读出题目的输入; (2)向屏幕上打印出题目的计算结果; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
26. |
城市之间问题 |
Vela在玩游戏时遇到麻烦了,需要你帮忙:这个游戏有M个城市,有的城市有传送点,可以直接到达另外一些城市,如a[2][3]表示可以从城市2直接到达3。无法直接到达的城市,有的可以通过某些城市中转到达。Vela在城市X,她想知道是否可以到达某城市Z。 输入:此题第一行输入N表示城镇数目(N为小于10的正整数);从第二行开始输入一个N*N的矩阵,若a[m][k]=1(0<=m,k<n),就可以从城市m直接到达k,否则不可以直接到达。第N+2行输入两个数字P,Q。
输出:如果可以从P到达Q,输出1,否则输出0。 输入样例:
3 1 1 0 0 1 1 0 0 1 0 2
输出样例: 1 提示:0不能直接到达2,但可以先到达1,再从1到达2。 |
主要功能: (1)从文件中读出题目的输入; (2)向屏幕上打印出题目的计算结果,并输出路线; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
27. |
一笔画问题
|
syz从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。(规定,所有的边都只能画一次,不能重复画。) 输入: 每组测试数据的第一行有两个正整数P,Q(P<=1000,Q<=2000),分别表示这个画中有多少个顶点和多少条连线。(点的编号从1到P) 输出: 如果存在符合条件的连线顺序,则将连线的顺序展示出来(如果有多重可能,任意展示一种即可)如果不能一笔完成,则显示不能 样例输入: 4 3 1 2 1 3 1 4
4 5 1 2 2 3 1 3 1 4 3 4 样例输出: No Yes(此处图形界面实现)
要求:运用图形界面展示
提示:搜索(从不同的点开始下笔结果可能不一样) |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
28. |
密码宝盒问题 |
小T得到了一个宝盒,可惜打开这个宝盒需要一组神奇的密码,然而在宝盒的下面有关于密码的提示信息:密码是一个十进制的数(不超过20位,可用 long long表示),并且只能由给定的M个数字(可重复使用)中的某些构成,同时密码是一个给定十进制整数N的正整数倍,如果这样的密码存在,那么你就可以打开宝盒并得到宝贝,如果不存在这样的密码......那你就只能收藏这个宝盒了. 输入: 输出: 输出:密码如果存在,输出最小的那个密码,不存在”So Sorry.”(密码不含前导零) 样例输入: 22 3 7 0 1
2 1 1 样例输出: 110 So Sorry.
提示:搜索
|
1. 从文件中读出题目的输入; 2.向屏幕上打印出题目的计算结果; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
29. |
迷宫逃脱问题 |
小A无意间得到了一张藏宝图,于是他带着这张藏宝图进入迷宫寻找宝藏,找到宝藏后却不小心触动机关导致迷宫各处产生岩浆,小A急忙逃脱。此时如果丢下宝藏,小A就能逃脱成功,但小A并不想轻易放弃宝藏。所以他急忙联系当程序员的朋友你(当然是用手机联系),并告诉你他所面临的情况,希望你能告诉他是否能成功带着宝藏逃脱。 输入: 第一行是两个整数N和M。代表迷宫的大小有N行M列(0<=N,M<=1000)接下来是一个N*M的迷宫描述。S代表小A的所在地。E代表出口,出口只有一个。.代表可以行走的地方。!代表岩浆的产生地。(这样的地方会有多个,其个数小于等于10000)#代表迷宫中的墙,其不仅能阻挡小A前进也能阻挡岩浆的蔓延。 小A携带者宝藏每秒只能向周围移动一格,小A不能碰触到岩浆(小A不能和岩浆处在同一格)。岩浆每秒会向四周不是墙的地方蔓延一格。小A先移动完成后,岩浆才会蔓延到对应的格子里。小A能移动到出口,则小A顺利逃脱。 输出: 每组测试数据输出只有一行“Yes”或者“No”。“Yes”代表小A可以成功逃脱。否则输出“No”。 输入样列:
输出样列: Yes 提示:搜索 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30. |
判断基因的相似性的求解算法 |
众所周知,人类基因可以认为是一个基因序列,包含四种核苷酸,分别用A,C,G和T4个字母简单地表示。生物学家对鉴别人类基因并确定他们的功能很感兴趣,因为这对诊断人类疾病和开发新药很有用。 你的任务是编写一个程序,按以下规则比较两个基因并确定他们的相似程度。如果程序算法高效的话,就会作为基因数据库的检索功能之一。 给出两个基因AGTGATG和GTTAG,他们有多相似呢?测量两个基因相似度的一种方法称为对齐。使用对齐方法,可以在基因的适当位置插进空格,让两个基因的长度相等,然后根据下面的基因分值矩阵(注意:*号表示空格对空格是不允许的。)计算分数。
基因分值矩阵 例如:给AGTGATG插入一个空格,就得到AGTGAT-G;给GTTAG插入三个空格,就得到-GT--TAG。空格用减号(-)表示。现在两个基因一样长了,把这两个字符串对齐; AGTGAT-G -GT--TAG 对齐后,有4个基因是相配的:第二位的G,第三位的T,第六位的T和第八位的G。根据下列基因分值矩阵,没对匹配的字符都有相应的分值。 上面对齐的字符串分值是: (-3)+5+5+(-2)+(-3)+5+(-3)+5=9. 当然,还有其他的对齐方式。下面另一种对齐方式(不同数量的空格插进不同的位置): AGTGATG -GTTA-G 这种对齐方式的分值是(-3)+5+5+(-2)+5+(-1)+5=14,它比前一个要好。其实这种对齐方式是最优的,没有其他的方式能得到更高的分值了,所以这两个基因的相似度是14. 输入: 输入数据有T组测试样例,在第一个给出测试样例的个数(T)。每个测试用例有两行:每行有一个表示基因长度的整数和一个基因序列。每个基因序列的长度大于1不超过100. 输出: 输出每个测试样例的相似度,每行一个。 输入样列: 2 7 AGTGATG 5 GTTAG 7 AGCTATT 9 AGCTTTAAA 输出样列: 14 21 提示:动态规划 |
1. 从文件中读出题目的输入; 2. 向屏幕上打印出题目的计算结果; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
31. |
基因拼接问题 |
随着大量的基因组DNA序列数据被获得,它对了解基因越来越重要(基因组DNA的一部分,是负责合成蛋白质的)。总所周知,在基因组序列中,由于存在垃圾的DNA中断基因的编码区,真核生物(相对于原核生物)的基因链更加复杂。也就是说,一个基因被分成几个编码片段(称为外显子)。虽然在蛋白质的合成过程中,外显子的顺序是固定的,但是外显子的数量和长度可以是任意的。 大多数基因识别算法分为两步:第一步,寻找可能的外显子;第二步,通过寻找一条拥有尽可能多的外显子的基因链,尽可能大地拼接一个基因。这条链必须遵循外显子出现在基因组序列中的顺序。外显子i在外显子j的前面的条件是i的末尾必须在j开头的前面。 本题目的目标是,给定一组可能的外显子,找出一条拥有尽可能多的外显子链,拼接成一个基因。 输入: 给出几组输入实例。每个实例的开头是基因组序列中可能的外显子数n(0<n<1000).接着的n行,每行一对整数,表示外显子在基因序列中的起始和结束位置。假设基因组序列最长为50000.当一行是0时,表示输入结束。 输出: 对于每个实例,找出最可能多的外显子链,输出链中的外显子,并占一行。假如有多条链,但外显子数相同,那么输出其中任意一条。 输入样列: 6 340 500 220 470 100 300 880 943 525 556 612 776 3 705 773 124 337 453 665 0 输出样列: 3 1 5 6 4 2 3 1 提示:可以用贪心或动归来做。 |
1. 从文件中读出题目的输入; 2. 向屏幕上打印出题目的计算结果; |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
32. |
稳定配对问题 |
男女运动员配对问题:设B是n个男运动员的集合,G是n个女运动员的集合。每个男运动员将女运动员从1到n排序,每个女运动员将男运动员从1到n排序。配对是男和女是一一对应的。如果每两个男运动员b1和b2以及与他们配对的女运动员g1和g2满足以下两个条件,则称配对是稳定的: (1) b1的排序中g1比g2高,或者g2的排序中b2比b1高; (2) b2的排序中g2比g1高,或者g1的排序中b1比b2高; |
稳定配对总是存在的,设计一个算法找到一个这样的配对。 例如:n=5 女运动员的体能: g(1)=8,g(2)=5,g(3)=9,g(4)=2,g(5)=3; 女运动员的经验值: g(1)=5,g(2)=7,g(3)=3,g(4)=6,g(5)=9 男运动员b1将女运动员按体能排序: g(4),g(5),g(2),g(1),g(3) (g1比g2高) 男运动员b2将女运动员按经验值排序: g(3),g(1),g(4),g(2),g(5)(g2比g1高) 所以b1和g1,b2和g2配对是稳定的。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
33. |
k-边最短路径问题 |
设图G=(V,E)是有n个顶点m条边的无向图,边e上的权值 w(e)>=0为实数。对任意给定的整数k和图中两个顶点s和t, k- 边最短路径定义为:一条从s到t的路径,路径上的边数不超过k,且路径上所有边的权值之和最小。 |
设计一个时间复杂度为O(k(n+m))的动态规划算法计算k-边最短路径。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
34. |
连续邮资问题 |
假定某国家发行了n种不同面值的邮票,并规定每个信封上最多只允许贴m张邮票。对给定的n和m的值,现要求一个信封上所贴邮票的邮资可以是某个区间[1,maxpostage]的每个值,即所谓连续邮资。 |
设计一个回溯法算法求使maxpostage最大的邮资面值组合。 例如:n=5 和m=4时 面值为(1,3,11,15,32)的5种邮票, 可形成[1,70]的最大连续邮资区间。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
35. |
序列模式挖掘问题 |
请用类Apriori算法或它的扩展算法GSP算法求解下面序列模式挖掘问题。
|
详细论述见下题 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
36. |
序列模式挖掘问题 |
请用FreeSpan算法或它的扩展算法Prefixspan算法求解下面序列模式挖掘问题。
序列模式挖掘在web页访问模式,顾客购买习惯已经DNA序列分析等方面应用非常广泛,涉及的主要概念如下: 假设代表一个项目集合,即项集(Itemset)。事物数据库D是由元祖{(sid,sequence)}构成的集合,包含sid字段和sequence字段,可以表示为D=,事务(i=1,2,…,n)等于项目集的某个非空子集。如果有是I的子集,事物数据库中项目集的支持度可以通过计算包含的事物数与D中包含的序列数的比值得到,支持度的计算公式如下: Support( 针对事物数据库D和项目集I,I的非空子集的支持度大于或者等于用户给定的最小支持度(minsup),该子集称为频繁项目集。在频繁项目集中,最大的频繁项是指不被其他任何频繁项集所包含的项集。 如果项集,其中代表一个项,其中 1≤k≤m, S=>代表一个序列,其中为序列的元素,并且1。序列中的每个元素都包含的不同的项目。在序列中,元素element可以表示成。序列的长度可以定义为在序列中所包含有的项的个数,l-序列代表长度为l的序列。如果有两个序列,序列α=<,序列β=<,假设有一系列整数,并且满足条件时,那么序列α为序列β的子序列,表示为αβ。在事务数据库S中,包含序列α的事务序列的个数称之为序列α的支持数,可以表示为 Support(α)。在事务数据库中,把满足用户指定的最小支持度阈值 minsup 的序列模式称之为频繁序列模式, k-模式代表序列模式的长度等于 k。 对于用户给出的事务数据库 S 以及最小支持度 minsup,序列模式挖掘的任务就是找出事务数据库中所有支持度大于或者等于 minsup 的序列模式或者最大频繁序列模式。 问题描述: 下表记录了5个顾客在一个月内的购买行为,为方便处理,按顾客号和时间进行了排序。
转换成序列数据库如下表:
假设用户指定的最小支持度minsup=30%,计算满足minsup 要求的最大频繁序列模式。 参考输出:<(I1)(I2,I5)>和<(I1)(I6)>
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
37. |
跳蚤问题 |
Z城市居住着很多只跳蚤。在Z城市周六生活频道有一个娱乐节目。一只跳蚤将被请上一个高空钢丝的正中央。钢丝很长,可以看作是无限长。节目主持人会给该跳蚤发一张卡片。卡片上写有N+1个自然数。其中最后一个是M,而前N个数都不超过M,卡片上允许有相同的数字。跳蚤每次可以从卡片上任意选择一个自然数S,然后向左,或向右跳S个单位长度。而他最终的任务是跳到距离他左边一个单位长度的地方,并捡起位于那里的礼物。 比如当N=2,M=18时,持有卡片(10, 15, 18)的跳蚤,就可以完成任务:他可以先向左跳10个单位长度,然后再连向左跳3次,每次15个单位长度,最后再向右连跳3次,每次18个单位长度。而持有卡片(12, 15, 18)的跳蚤,则怎么也不可能跳到距他左边一个单位长度的地方。 当确定N和M后,显然一共有MN张不同的卡片。现在的问题是,在这所有的卡片中,有多少张可以完成任务。 Input 两个整数N和M(N<=15,M<=100000000)。 Output 可以完成任务的卡片数。 Sample Input 2 5 Sample Output 这24张卡片分别是: (1,1,5),(1,2,5),(1,3,5),(1,4,5),(1,5,5), (2,1,5),(2,2,5),(2,3,5),(2,4,5),(2,5,5), (3,1,5),(3,2,5),(3,3,5),(3,4,5),(3,5,5), (4,1,5),(4,2,5),(4,3,5),(4,4,5),(4,5,5), (5,1,5),(5,2,5),(5,3,5),(5,4,5)
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
38. |
旅游预算问题 |
一个旅行社需要估算乘汽车从某城市到另一城市的最小费用,沿路有若干加油站,每个加油站收费不一定相同。旅游预算有如下规则: 若油箱的油过半,不停车加油,除非油箱中的油不可支持到下一站; 每次加油时都加满; 在一个加油站加油时,司机要花费2元买东西吃; 司机不必为其他意外情况而准备额外的油; 汽车开出时在起点加满油箱;计算精确到分(1元=100分)。 编写程序估计实际行驶在某路线所需的最小费用。
从当前目录下的文本文件“route.dat”读入数据。按以下格式输入若干旅行路线的情况: 第一行为起点到终点的距离(实数) 第二行为三个实数,后跟一个整数,每两个数据间用一个空格隔开。其中第一个数为汽车油箱的容量(升),第二个数是每升汽油行驶的公里数,第三个数是在起点加满油箱的费用,第四个数是加油站的数量。(〈=50)。接下去的每行包括两个实数,每个数据之间用一个空格分隔,其中第一个数是该加油站离起点的距离,第二个数是该加油站每升汽油的价格(元/升)。加油站按它们与起点的距离升序排列。所有的输入都有一定有解。 输出格式: 答案输出到当前目录下的文本文件“route.out”中。 该文件包括两行。第一行为一个实数和一个整数,实数为旅行的最小费用,以元为单位,精确到分,整数表示途中加油的站的N。第二行是N个整数,表示N个加油的站的编号,按升序排列。数据间用一个空格分隔,此外没有多余的空格。 测试数据: route.dat 500 30 25.4 10 20 102.0 0.999 130.0 1.000 144.1 1.111 150.2 1.100 166.5 1.050 180.0 1.142 188.0 1.205 190.1 1.300 220.0 1.329 234.1 1.299 244.2 1.123 256.3 1.479 275.0 1.029 277.6 1.129 299.0 1.022 320.0 1.002 360.0 2.000 381.8 1.009 421.4 1.562 470.3 2.100
route1.dat 475.6 11.9 27.4 14.98 6 102.0 0.999 220.0 1.329 256.3 1.479 275.0 1.029 277.6 1.129 381.8 1.009 参考输出 route.out 10.00 0 route1.out 27.31 1
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
39. |
猫和老鼠问题 |
猫Tom和鼠Jerry同住在一矩阵地窖中。猫要吃鼠,鼠要吃奶酪。地窖中有2种地砖:有洞砖与无洞砖。一个洞足以让鼠钻入,但猫不能。以图形界面的形式完成以下任务: |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
40. |
父子打牌问题 |
问题描述:一对父子喜欢打牌,他们想出了一种玩法。假设他们分别有 n 张牌,每张牌有一个战力值,他们知道自己和对手每张牌的战力。两人进行 n 次较量,每次较量双方各出一张牌,每张牌限比一次。儿子通过某种手段已经预先打探到了父亲的出牌顺序。比赛规则:任意一方出的牌的战力值高于另一方,则出的牌战力值高的一方获胜。其中胜者可以从对方手中得到¥200,输者必须给对方¥200。如果双方出的牌的战力值相同,则为平局,平局各不付钱。问儿子要使用怎样的出牌策略,才能使自己赚的钱最多(或者输的钱最少)。 编程任务:对于给定的儿子和父亲的n张牌的战力,输出进行n场比赛后,求儿子最多可以赚到的钱。 数据输入:输入数据的第一行为一个整数 n,表示儿子和父亲拥有的牌的数量。第二行的 n 个整数,表示儿子拥有的牌的战力值。第三行的 n 个整数,表示父亲拥有的牌的战力值。输入数据有多组,当 n=0 时,表示输入数据结束。(0 <= n <= 1000)结果输出: 将计算出的儿子最多可以赚到的钱输出。 输入示例 3 93 84 72 96 88 75 2 21 21 21 21 2 25 24 27 23 0 输出示例 200 0 0
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
41. |
魔法花园问题
|
问题描述:哈利被困在了一个魔法花园里。魔法花园是一个 N*M 的矩形,在其中有着许多植物,这些植物会在时刻 T 消失,如果 T 是 K的倍数。哈利每单位时间都会选择上、下、左、右四个方向的其中一个进行移动。 实验任务:已知哈利的位置和出口的位置,哈利希望你能告诉他最少需要多少时间能离开魔法花园,如果无法移动或无法找到出口,哈利会使用移形幻影。 数据输入:第一行有一个正整数 T(1<=T<=10),表示样例数。每个样例数据的第一行有三个正整数 N、M 和 K(1<=N,M<=100,2<=K<=10),表示魔法花园是 N 行 M 列的。接下来的 N 行每行有 M 个字符,‘0’代表空的地板,“1”代表障碍,“2”代表哈利的起始位置,“3”代表出口的位置。 数据输出:输出一个数,表示哈利离开魔法花园最少需要的时间,如果无法离开则输出“Mobiliarbus”。
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
42. |
Needleman-Wunsch全局序列比对算法
|
全局序列比对 尝试找到两个完整的序列 S1 和 S2 之间的最佳比对。如S1=GCCCTAGCG S2=GCGCAATG 如果设定每个匹配字符为1分,每个空格为-2分,每个不匹配为-1分,则下面的比对就是全局最优比对:S1'=GCCCTAGCG S2'=GCGC_AATG,连字符“_”代表空格。在 S2' 中有五个匹配字符,一个空格(或者反过来说,在 S1' 中有一个插入项),有三个不匹配字符。这样得到的分数是 (5×1) + (1×-2) + (3×-1) = 0,这是能够实现的最佳结果。 请用Needleman-Wunsch 算法实现上面全局序列比对的最优结果,算法描述如下: 该算法用来计算全局比对。它的思路与 LCS 算法相似。这个算法也使用二维表格,一个序列沿顶部展开,一个序列沿左侧展开。而且也能通过以下三个途径到达每个单元格:1.来自上面的单元格,代表将左侧的字符与空格比对。2.来自左侧的单元格,代表将上面的字符与空格比对。3.来自左上侧的单元格,代表与左侧和上面的字符比对(可能匹配也可能不匹配)。该单元格的值来自于以下3个中的最大值:(1)上方的值-2 (2)左边的值-2 (3)如果该单元格所在的行于所在的列对应的字符相等,则为左上值加1,否则为左上值-1。
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
43. |
中点画线Bresenham算法 |
中点画线算法:假定直线斜率k在0~1之间,当前象素点为(xp,yp),则下一个象素点有两种可选择点P1(xp+1,yp)或P2(xp+1,yp+1)。若P1与P2的中点(xp+1,yp+0.5)称为M,Q为理想直线与x=xp+1垂线的交点。当M在Q的下方时,则取P2应为下一个象素点;当M在Q的上方时,则取P1为下一个象素点。Bresenham画线算法: // 假设该线段位于第一象限内且斜率大于0小于1,设起点为(x1,y1),终点为(x2,y2). // 根据对称性,可推导至全象限内的线段. 1.画起点(x1,y1). 2.准备画下个点。x坐标增1,判断如果达到终点,则完成。否则,由图中可知,下个要画的点要么为当前点的右邻接点,要么是当前点的右上邻接点. 2.1.如果线段ax+by+c=0与x=x1+1的交点的y坐标大于M点的y坐标的话,下个点为U(x1+1,y1+1) 2.2.否则,下个点为B(x1+1,y1) 3.画点(U或者B). 4.跳回第2步. 5.结束. |
用Java语言,或者C++语言 要求:开发出图形化界面,可以指定端点画线段或者使用鼠标画线。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
44. |
小球碰撞问题 |
四叉树是一种树状数据结构在每一个节点上会有四个子区块. 四叉树常应用于二维空间资料的分析与分类. 将资料区分成为四个象限. 资料范围可以是方形或矩形或其他任意形状,可分解成为各自的区块。至少1000个小球。 每一个区块可持续分解直到资料无法分解为止树状数据结构依造四叉树法加以区分 如下图:
|
Java或者C++
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
45. |
电话号码的字符串处理问题 |
电话号码的字符串处理并排序输出,但是实现时有几个注意的地方 1、用map存储比较方便,可以自动根据string的排序规则排序,而且题目数据恰好是<string,int>的K-V存储特点。 2、用另一个字符串重新拼接待输出地字符串比直接对输入字符串进行替换移位等操作要方便。 3、注意字符和数字的ASCII的转化。 4、‘-’的加入可以在输出的时候,输到第4个字符的时候先输出‘-’。 5、map,set,vector,deque,list等容器要熟练使用。 |
使用Java语言 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
46. |
数字布置问题 |
把1-8这8个数放入下图8个格中,要求相邻的格(横,竖,对角线)上填的数不连续。 |
Java或者C++
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
47. |
甲虫走迷宫问题 |
一只甲虫在一个迷宫(一个10×10的矩阵表示)中移动,迷宫中有若干个柱子(在矩阵中表示为值为1的单元)。甲虫从迷宫中的某个位置出发,按照预先设置的指令在迷宫中行进:指令是一串由1~4组成的数字,分别代表行进的4个方向:1代表向上,2代表向右,3代表向下,4代表向左。当按照移动指令移动后的位置是一个柱子或超出了迷宫的范围则忽略该步指令。最终程序将显示指令序列结束后的甲虫所处的位置。 |
Java或者C++
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
48. |
宝石游戏问题 |
宝石游戏比较有趣,它在13X6 的格子里进行。游戏给出红色、蓝色、黄色、 橘黄色、绿色、和柴色的宝石。当任何三 个以上宝石具有相同颜色并且在一条直线(横竖斜)时,这些宝石 可以消去。游戏如图所示。现在给定当前游戏状态和一组新的石头, 请编程计算当所有石头落下时游戏的状态
输入:第一行n 表示n 组测试数据。 下面每一个测试数据包含一个13 X 6 的字符表,其中B 表示蓝色,R 表示红色,O 表示橘黄色、Y 表示黄色,G 表示绿色,P 表示紫色,W 表示此处没有宝石。接下来三行,每行包含一个字符,表示新来的宝石下落的位置。 输出:
每一个测试样例,输出当所有宝石落下后游戏的状态。 样例输入: 1 WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW BBWWWW BBWWWW OOWWWW B B Y 3 样例输出: WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW WWWWWW OOYWWW |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
49. |
罗密欧与朱丽叶的迷宫问题 |
罗密欧与朱丽叶身处一个m×n的迷宫中。每一个方格表示迷宫中的一个房间。这m×n个房间中有一些房间是封闭的,不允许任何人进入。在迷宫中任何位置均可沿8 个方向进入未封闭的房间。罗密欧位于迷宫的(p,q)方格中,他必须找出一条通向朱丽叶所在的(r,s)方格的路。在抵达朱丽叶之前,他必须走遍所有未封闭的房间各一次,而且要使到达朱丽叶的转弯次数为最少。每改变一次前进方向算作转弯一次。请设计和实现一个算法帮助罗密欧找出这样一条道路。
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
50. |
服务调度问题 |
设有n个顾客同时等待一项服务。顾客i需要的服务时间为Ti,其中1<i<n,共有s 处可以提供此项服务。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n个顾客等待服务时间的总和除以n。 |
设计一个算法,解决该问题。例如n=6,s=4,可考虑用回溯法或分支限界法 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
51. |
整数变换问题 |
关于整数i的变换f 和g定义如下:f(i)=3i,g(i)=int(i/2)。试设计一个算法,对于给定的两个整数n和m,用最少的f和g变换次数将n变换为m。例如:n=15 , m=4 可以进行4次变换,g(15)=7,g(7)=3,f(3)=9,g(9)=4,变换成功。4=gfgg(15),当整数n不可变换为m时,显示n不能变换到m。 |
设计一个算法,解决该问题。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
52. |
二叉树中的最大路径和 |
给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
示例 1: 输入: [1,2,3]
1 / \ 2 3 输出: 6
示例 2: 输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7
输出: 42 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
53. |
批处理作业调度问题 |
有n个 给定N个作业的集合{J1,J2,...,JN},以及K个机器的集合{M1,M2,...,MK}。每个任务都必须先由M1完成,再由M2完成,...,最后由MK完成。假设机器可以并行工作,不同的任务在同一个机器上的处理时间可能不同。将所有作业在机器K上完成处理的时间和,称为该批作业调度的完成时间和T,求解N个作业的最佳调度顺序,使得T最小。 由k使用回溯算法的思想,设计一个解决该问题的算法。 |
(1)用文件导入每个任务在每个机器上所需的时间Ti。(至少10个作业,5个机器);(2)实现回溯法;(3)设计一个输出界面,输出调度方案。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
54. |
十五谜题 |
编号由1到15的方砖被放进4*4的盒子中,盒子共有16个方块,还有一个空余方块。任务是通过滑动盒子中的方砖对其进行重新排列,使15个方砖顺序摆放,滑动过程中一次只能移动一个方砖(旁边有空余方块的)。 |
设计一个算法判断一个给定的谜题输入是否有解?初始位置布局可以为: 1 2 3 4 5 6 7 8 9 10 11 12 13 15 14 而目标位置布局则为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
55. |
清洁公司 |
有一个大厅最近要赵凯一个很重要的会议,因此会议的组织者请了一个清洁公司来给大厅做清洗。大厅是一个N*M的网格区域(N, M≤500),其中有些格子是障碍物。清洁公司使用一种自动清洗机来完成清洁工作。机器是一个边长为L的正方形(2≤L≤100),总覆盖着边长为L个格子的正方形网格区域。机器每步可以沿着东、南、西、北四个方向之一移动一个单位长度,凡是被机器覆盖过的区域均被认为是清理过的。 下图为一个大厅的示例,白色的格子代表地板,黑色的格子代表障碍物,灰色的格子代表清洗机。
由于机器的速度太慢,只能用它移动H(50≤H≤10000)步。怎样才能在规定的步数里清理尽可能大的面积呢? |
输入示例:如左图。 输出:清洗机的行走方案。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
56. |
三个水壶问题 |
有一个充满水的8品脱(pint,一种容积单位)的水壶和两个空水壶(容积分别是5品脱和3品脱)。通过两种操作方式,即将水壶完全倒满水和将水壶的水完全倒空,在其中的一个水壶中得到4品脱的水。 |
设计算法,求出操作序列。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
57. |
2n筹码问题 |
对于任意整数n>1,放置2n个筹码在n*n的棋盘上,要求在同一行、同一列以及同一对角线上的筹码个数不超过2个。 |
设计算法,求出所有的放置方法。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
58. |
方格遍历问题 |
对于给定方格板,试着找出一条遍历板上所有方格的路径,或者证明这样的路径并不存在。遍历要求沿水平或竖直方向穿越相邻的方格并且路径不能折返。由黑色方格所组成的两个方格板如下图。
|
输入示例:如右图。 输出遍历路径或者证明没有路径。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
59. |
对角线上的棋子问题 |
一张n*n(n≥4)的棋盘上,每个从左上到右下的对角线上的七个都有一个棋子。每次走起,可以选择任意两枚棋子组成一对,让它们同时向下移动一个,要求棋子不能走出棋盘边界。有些的最终目的是将所有棋子移动到棋盘的底边。找出所有对此可行的n的取值,并设计一个算法来完成该项任务,同时计算出所用算法中走棋的次数。 |
输出n的取值范围,以及完成该项任务的走棋次数。 |