棋盤缺一角問題

2021-08-16 02:41:43 字數 1674 閱讀 7356

問題的描述很簡單,就是乙個西洋棋的棋盤缺少乙個方格。我們能否使用右邊l的圖案拼出左邊這種棋盤(並且右邊的圖形不可以重疊)

這是一道智力測試題,但是我們可以通過程式非常簡潔的處理這個問題。

首先,我們希望問題的規模縮小,我們首先將棋盤分成四個部分

這個時候問題出現了,有乙個小部分和其他部分不同,這對我們很不利,但是可以這樣考慮

我們發現將棋盤中間挖去乙個l型,就變成了四個相同的 「缺乙個角的小棋盤」 。這就很好了!我們把問題的規模變小了。

通過上述規律推導,不難發現,最後剩下的就是l圖型。

最後我們整理一下思路

def

cover

(board, lab=1, top=0, left=0, side=none):

if side is

none:

side = len(board)

s = side // 2

offsets = (0, -1), (side - 1, 0)

for y_outer, y_inner in offsets:

for x_outer, x_inner in offsets:

ifnot board[top + y_outer][left + x_outer]:

board[top + s + y_inner][left + s + x_inner] = lab

lab += 1

if s > 1:

for y in [0, s]:

for x in [0, s]:

lab = cover(board, lab, top + y, left + x, s)

return lab

board = [[0]*8

for i in range(8)]

board[7][7] = -1

cover(board)

for row in board:

print((" %2d"*8) % tuple(row))

結果就是

334

4889

9322

4877

9526

610107

11556

111011

1113

1314118

1819

1913

1214

1418

1717

1915

1212

1620

1721

2115

1516

1620

2021 -1

校園的一角

早晨的宣傳欄前 王韜正在看一張 haha購物網招聘推銷員 的廣告。不遠處,王韜的女朋友晴晴等得有些不耐煩了。晴晴道 哎呀,那些廣告有什麼好看的,時間不早了,趕緊去圖書館佔位置去啦!王韜的眼睛依舊盯著廣告,說道 再等一會兒啊。晴晴鬧起了小脾氣,道 你不走,我可走了!王韜無奈道 好啦,走,不看啦。王韜邊...

指標與引用的一角

指標與引用的一角 2011年09月09日 引用通過指標實現是眾所周知的事情,但是指標和引用配合使用的時候遇到乙個小問題,現記錄於下,以供日後參照。問題的起因 通過訊息傳遞的系統,在收到訊息的時候需要解析訊息。最近做了一次修改,把訊息結構體裡的部分內容刪除以後,其中一部分內容改由記憶體拼接的方式傳遞。...

《古城一角》demo,ogre引擎與IOS

古城一角 是用ogre引擎和bullet引擎在蘋果的ipad的開發的 遊戲小demo,全部過程由我自己一人完成,其中資源裡面的人物和動畫是ogre裡面自帶的,場景模型是自己從torque的dts轉化的,屠龍刀是龍之谷裡面的模型。程式logo是我老婆給我設計的,甚是喜歡。1。程式logo 2.ogre...