前段時間碰到乙個有趣的問題,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的思路。假設第一列已經鋪滿,則第二...