Python3解決棋盤覆蓋問題的方法示例

2022-10-04 20:39:16 字數 1780 閱讀 2008

問題描述:

在2^k*2^k個方格組成的棋盤中,有乙個方格被占用,用下圖的4種l型骨牌覆蓋所有棋盤上的其餘所有方格,不能重疊。

**如下:

def chess(tr,tc,pr,pc,size):

global mark

global table

mark+=1

count=mark

if size==1:

return

half=size//2

程式設計客棧 if prwww.cppcns.comse:

table[tr+half-1][tc+half-1]=count

chess(tr,tc,tr+half-1,tc+half-1,half)

if pr=tc+half:

chess(tr,tc+half,pr,pc,half)

else:

table[tr+half-1][tc+half]=count

chess(tr,tc+half,tr+half-1,tc+half,half)

if pr>=tr+half and pc=tr+half and pc>=tc+half:

chess(tr+half,tc+half,pr,pc,half)

else:

table[tr+half][tc+half]=count

chess(tr+half,tc+half,tr+half,tc+half,half)

def show(table):

n=len(table)

for i in range(n):

for j in range(n):

print(table[i][j],end=' ')

print('')

mark=0

n=8table=[[-1 for 程式設計客棧x in range(n)] for y in range(n)]

chess(0,0,2,2,n)

show(table)

n是棋盤寬度,必須是2^k,本例中n=8,特殊格仔在(2,2)位置,如下圖所示:

採用分治法每次把棋盤分成4份,如果特殊格仔在這個小棋盤中則繼續分成4份,如果不在這www.cppcns.com個小棋盤中就把該小棋盤中靠近**的那個格仔置位,表示l型骨牌的1/3佔據此處,每一次遞迴都會遍歷查詢4個小棋盤,三個不含有特殊格仔的棋盤置位的3個格仔正好在大棋盤**構成乙個完整的l型骨牌,依次類推,找到全部覆蓋方法。執行結果如下:

更多關於python相關內容感興趣的讀者可檢視本站專題:《python資料結構與演算法教程》、《python加密解密演算法與技巧總結》、《python編碼操程式設計客棧作技巧總結》、《python函式使用技巧總結》、《python字串操作技巧彙總》及《python入門與高階經典教程》

希望本文所述對大家python程式設計有所幫助。

本文標題: python3解決棋盤覆蓋問題的方法示例

本文位址:

點讚打賞

分享如果認為本文對您有所幫助請贊助本站

宣告:凡註明"本站原創"的所有文字等資料,版權均屬程式設計客棧所有,歡迎**,但務請註明出處。

標籤:python3  棋盤覆蓋問題

python基於回溯法解決01揹包問題例項python程式設計之gui程式實現簡單檔案瀏覽器**

您可能感興趣的文章:

廣告贊助

廣告贊助

最新發布

全站最新

廣而告之

© 2018-2021 程式設計客棧 贛icp備17006162號-9

贛公網安備 36110202000251號

top

棋盤覆蓋問題python3實現

在2 k 2 k個方格組成的棋盤中,有乙個方格被占用,用下圖的4種l型骨牌覆蓋所有棋盤上的其餘所有方格,不能重疊。如下 def chess tr,tc,pr,pc,size global mark global table mark 1 count mark if size 1 return hal...

棋盤覆蓋問題python3實現

在2 k 2 k個方格組成的棋盤中,有乙個方格被占用,用下圖的4種l型骨牌覆蓋全部棋盤上的其餘全部方格,不能重疊。例如以下 def chess tr,tc,pr,pc,size global mark global table mark 1 count mark if size 1 return h...

c 解決棋盤覆蓋問題

include include define board size 4 該棋盤矩陣的維度 using namespace std int board board size board size 宣告該棋盤矩陣 void chessboard int tr,int tc,int dr,int dc,i...