分治法一题.
Triomino 拼图:
Triomino 是由棋盘上的三个邻接的方块组成L型的瓦片.我们的问题是如何用Triomino腐败一个缺少了一个方块
(可以在棋盘的任意位置)的棋盘(2^n x 2^n) .除了这个确实的方块.Triomino 应该覆盖棋盘上所有其他的方块.
而且不能有重叠.
今天刚看算法没多久. 居然就出了这么一个让人摸不着头脑的.
起初一点头绪都没有.于是和朋友一起想. 朋友的提示让我茅塞顿开.
-----------------
#
##
2x2 L
-----------------
AA
AD
BDDC
BBCC
4x4 (三个L型2x2的组成) L
-----------------
.......
因此. 当我们拿到一个 2^n x 2^n 的时候 我们应该先找出那个空格所在的区块
(均分为4块. 必将落于一中. 没快为 2^(n-1) x 2^(n-1)
A | B
--|--
C | D
假设落于B. 则我们可以将A C D 用 2^(n-2) 的L型来实现). 然后再对B进行同样的步骤.这样分下去直到分到一个2x2的.
最后填入一个2x2的L型便实现
posted @
2006-04-04 21:25 kinns 阅读(647) |
评论 (0) |
编辑 收藏
问题:
在一次比赛中.
1.你被第二名超过了. 你是第几名?
2.你超过了第二名.你是第几名?
3.你被倒数第二名超过了. 你是倒数第几名?
4.你超过了倒数第二名. 你是第几名?
初听起来这问题挺绕口的. 回答起来有时还真得好好想想.
但回想起来这一过程.. 不正和我们程序代码由关么?
1. 你被第二名超过了. 你是第几名?
$you => $second.
2.你超过了第二名. 你是第几名?
$you <= $second
3.你被倒数第二名超过了.你是倒数第几名?
$you => $secondlast
4.你超过了倒数第二名.你是第几名?
$you <= $secondlast
很有味道.
posted @
2006-03-30 18:10 kinns 阅读(185) |
评论 (0) |
编辑 收藏