遞迴的應用 5X5的棋盤問題

2021-09-08 07:47:49 字數 1308 閱讀 7237

前段時間碰到乙個有趣的問題,5x5的棋盤,一條線連線所有點位(只能上下左右移動),且不能經過(1,4),有幾條線路?

分析:①不管啟點從何處開始,每個點位都應從上下左右四個路線分析

②點位全部連完或上下左右沒有可走點位則結束

每個點位操作類似,依次往下進行,且有結束條件,這似乎很符合遞迴的操作的特性

建立乙個point類封裝點位(省略equals,tostring,構造器等)

public

class

point

編寫計算邏輯

public

class

line

public

void

play()

//組裝棋盤

public

void

pushboard

(int x,

int y,list

badpoint)

} chessboard.

add(

newpoint

(i, j));

}}}//計算棋盤執行路線

public

void

cal(

int x,

int y,list

chessboard,list

badpoint)

} stringbuilder sb =

newstringbuilder()

;run

(i, j, chessboard,sb);}

}}public

void

run(

int i,

int j,list

chessboardnow,stringbuilder sb)}if

(temp.

size()

==0)if

(!i***ist)

//每個點位都可以上下左右進行移動

int up = j +1;

//向上移動

run(i, up, temp,sbn)

;int down = j -1;

//向下移動

run(i, down, temp,sbn)

;int left = i -1;

//向左移動

run(left, j, temp,sbn)

;int right = i +1;

//向右移動

run(right, j, temp,sbn);}

}

簡單驗證後,似乎可行_!

SQL大賽 5X5方格棋盤難題

盛拓傳媒杯 sql大賽第一期答題,本期題目 5x5方格棋盤難題 在5x5的方格棋盤中 如圖 每行 列 斜線 斜線不僅僅包括對角線 最多可以放兩個球,如何擺放才能放置最多的球,這樣的擺法總共有幾種?輸出所有的擺法。要求 用一句sql實現。輸出格式 從方格棋盤第一行至第5行,每行從第一列到第5列依次輸出...

棋盤覆蓋(遞迴的應用)

當 k 0 時,將2k 2k棋盤分割為4個 2k 1 2 k 1子棋盤 a 所示。特殊方格必位於 4個較小子棋盤之一中,其餘 3個子棋盤中無特殊方格。為了將這 3個無特殊方格的子棋盤轉化為特殊棋盤,可以用乙個 l型骨牌覆蓋這 3個較小棋盤的會合處,如 b 所示,從而將原問題轉化為 4個較小規模的棋盤...

狀壓dp 棋盤問題的學習

有乙個n m n 5,m 1000 的棋盤,現在有1 2及2 1的小木塊無數個,要蓋滿整個棋盤,有多少種方式?答案只需要mod1,000,000,007即可。我也不知道這道題的 qaq n和m的範圍本應是相同的,但是題目給出的n的值很小,這就給我們提供了使用狀壓dp的思路。假設第一列已經鋪滿,則第二...