problem description
小兔的叔叔從外面旅遊回來給她帶來了乙個禮物,小兔高興地跑回自己的房間,拆開一看是乙個棋盤,小兔有所失望。不過沒過幾天發現了棋盤的好玩之處。從起點(0,0)走到終點(n,n)的最短路徑數是c(2n,n),現在小兔又想如果不穿越對角線(但可接觸對角線上的格點),這樣的路徑數有多少?小兔想了很長時間都沒想出來,現在想請你幫助小兔解決這個問題,對於你來說應該不難吧!
input
每次輸入乙個數n(1<=n<=35),當n等於-1時結束輸入。
output
對於每個輸入資料輸出路徑數,具體格式看sample。
sample input
-1sample output
1 1 2
2 3 10
3 12 416024
#include#define ll long long
ll f[36][36];
void main()
{ int n;
int cnt=1;
while(scanf("%d",&n)!=eof&&n!=-1)
{for(int i=0;i<=n;i++)
f[0][i]=1;
for(int i=1;i<=n;i++)
for(int j=i;j<=n;j++)
{if(i這題其實是有限制條件版的動態規劃。它說不能超過對角線,那只要把棋盤分成兩部分,求出在上半部分三角形的可能的情況,最後乘2就好了。
先確定初始條件及邊界條件,邊界上的可能性都是1。
然後除了對角線上其他f[i][j]=f[i-1][j]+f[i][j-1] ,對角線上只可能有乙個方向來的f[i][j]=f[i-1][j](我算的是上三角形)
杭電 2067 小兔的棋盤
problem description 小兔的叔叔從外面旅遊回來給她帶來了乙個禮物,小兔高興地跑回自己的房間,拆開一看是乙個棋盤,小兔有所失望。不過沒過幾天發現了棋盤的好玩之處。從起點 0,0 走到終點 n,n 的最短路徑數是c 2n,n 現在小兔又想如果不穿越對角線 但可接觸對角線上的格點 這樣的...
hdu2067 小兔的棋盤
思路 遞推 include includeusing namespace std define ll long long ll dp 36 36 int cas 1 int main description 小兔的叔叔從外面旅遊回來給她帶來了乙個禮物,小兔高興地跑回自己的房間,拆開一看是乙個棋盤,小...
HDU 2067 小兔的棋盤
problem description 小兔的叔叔從外面旅遊回來給她帶來了乙個禮物,小兔高興地跑回自己的房間,拆開一看是乙個棋盤,小兔有所失望。不過沒過幾天發現了棋盤的好玩之處。從起點 0,0 走到終點 n,n 的最短路徑數是c 2n,n 現在小兔又想如果不穿越對角線 但可接觸對角線上的格點 這樣的...