网站页面
当前课程
成员
General
主题 1
主题 2
主题 4
主题 5
主题 6
主题 7
主题 8
主题 9
主题 10
主题 11
主题 12
主题 13
主题 14
主题 15
主题 16
主题 17
主题 18
主题 19
主题 20
地毯填补问题
成绩 | 0 | 开启时间 | 2011年07月10日 星期日 15:40 |
折扣 | 0.8 | 折扣时间 | 2011年07月10日 星期日 15:40 |
允许迟交 | 是 | 关闭时间 | 2011年07月10日 星期日 15:40 |
【问题描述】
相传在一个古老的阿拉伯国家里,有一座宫殿。宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站立的地方外的所有地方盖上,美丽漂亮聪慧的公主就是他的人了。公主这一个方格不能用地毯盖住,毯子的形状有所规定,只能有四种选择 ( 如图 ) :
并且每一方格只能用一层地毯,迷宫的大小为 2 k*2 k 的正方形。当然,也不能让公主无限制的在那儿等,对吧?由于你使用的是计算机,所以实现时间为 1s 。
【输入】
输入文件共 2 行。
第一行: k ,即给定被填补迷宫的边长为 2k ( 0 < k ≤ 10 ) ;
第二行: x y ,即给出公主所在方格的坐标 ( x 为行坐标, y 为列坐标 ) , x 和 y 之间有一个空格隔开。
【输出】
将迷宫填补完整的方案:
每一补 ( 行 ) 为 x y c,其中x , y 为毯子拐角的行坐标和列坐标, c 为使用毯子的编号(上面的图),编号用1 、 2 、 3 、 4 表示, x 、 y 、 c 之间用一个空格隔开 ) 。
【样例】
blank.in:
3
3 3
blank.out:
1 1 4
4 1 1
1 4 2
4 4 3
2 2 4
5 5 3
5 1 4
8 1 1
6 3 1
7 2 1
8 4 3
1 5 4
3 6 2
2 7 2
1 8 2
4 8 3
6 6 3
7 7 3
8 5 1
5 8 2
8 8 3
样例说明见下图(其中公主站在图中标X处):
分析:
由于正方形连长2的几次方,所以我们可以将原问题划分成四个小问题,以样例作为演示,见下图:
很显然,将大正方形对半分割成4个小正方形后,原来的公主肯定在四个小正方形之中的某一个,则我们将其它三个小正方形在最靠近中心的位置贡献出来,其它地方用地毯铺满即可,最后再来铺三人各贡献出来的那3个小方块,不管三个小正方形是何种位置,我们总能够找到1,2,3,4号地毯将它完全盖住,这样我们就将原问题划分成了四个一模一样的小问题了:即用1,2,3,4号地毯去盖一个正方形,除指定的那一块不盖,其它都盖满。
然后再设计递归函数可以完美解决。