b024: 2006npsc高中組決賽 F. 假日的奇想曲

出處 http://zerojudge.tw/ShowProblem?problemid=b024

內容 :

ayu是住在北方小鎮的一個女孩,平時最喜歡在商店街散步,然後去商店街最深處的一家鯛魚燒店買熱騰騰的鯛魚燒吃。

雖然說是小鎮,其實這個小鎮還蠻大的,ayu可以每天換一條不一樣的路線走去鯛魚燒店,走了一個多月還沒重複。走著走著她想到一個問題:這個小鎮有很整齊的棋盤狀街道,如果把ayu的出發點當做座標原點 (0, 0),商店街的位置在 (n, 2n)。如果每天都選不一樣的路,而且走最短路線(只能向北和東走),要幾天才能走完所有的路線呢?

雖然心智年齡只有十歲,聰明的 ayu 馬上就算出有 C(3n, n) 種走法。當 n 很大的時候,就算走一輩子也走不完。所以 ayu 想要對路線再加一點條件限制,讓可以挑的路線少一點:在 (0, 0) 到 (n, 2n) 間連一條直線,ayu 走的路只能在這條線的下方,可以踩到線,但是不能超過。加了限制之後問題突然變的很複雜,超過 ayu 的能力範圍,聰明的你能不能幫他計算呢?

輸入說明 :

輸入檔包含多組測試資料,每一組測試資料一行,每行一個整數n (1 ≦ n ≦ 10000)。讀到 n = 0 的時候代表測試檔案的結尾,不需要對於這個數字作任何輸出。

輸出說明 :

對每組測試資料,輸出ayu到鯛魚燒店可能的路線數。如果答案超過10000,只要輸出最後四位數就好。

Ex: n=2時有3種走法如下

範例輸入 :

1

2

3

0

範例輸出 :

1

3

12

提示 :

出處 :

2006 NPSC 高中組決賽

解題策略

使用DP,在標在第一象限, (i,0)表示x軸

左上角三角形dp陣列值為0,(i,j)當i<j/2,dp[i][j]=0;

dp[i][j]=dp[i][j-1]+dp[i-1][j],因為路徑只能來自於左方與下方,且dp[i][0]=1,對所有i,因為由x軸不斷往右邊走只有一種路徑

無法使用二維空間,dp[10001][20002]太大,使用一維空間模擬

說明圖片