• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ACM___________________________

            ______________白白の屋
            posts - 182, comments - 102, trackbacks - 0, articles - 0
            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            常用鏈接

            留言簿(24)

            隨筆分類(332)

            隨筆檔案(182)

            FRIENDS

            搜索

            積分與排名

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            MiYu原創(chuàng), 轉(zhuǎn)帖請(qǐng)注明 : 轉(zhuǎn)載自 ______________白白の屋

            題目地址:
                     http://acm.hdu.edu.cn/showproblem.php?pid=2067
            題目描述:
            Problem Description
            小兔的叔叔從外面旅游回來給她帶來了一個(gè)禮物,小兔高興地跑回自己的房間,拆開一看是一個(gè)棋盤,小兔有所失望。不過沒過幾天發(fā)現(xiàn)了棋盤的好玩之處。從起點(diǎn)(
            00)走到終點(diǎn)(n,n)的最短路徑數(shù)是C(2n,n),現(xiàn)在小兔又想如果不穿越對(duì)角線(但可接觸對(duì)角線上的格點(diǎn)),這樣的路徑數(shù)有多少?小兔想了很長(zhǎng)時(shí)間都沒想出來,現(xiàn)在想請(qǐng)你幫助小兔解決這個(gè)問題,對(duì)于你來說應(yīng)該不難吧!
             

            Input
            每次輸入一個(gè)數(shù)n(
            1<=n<=35),當(dāng)n等于-1時(shí)結(jié)束輸入。
             

            Output
            對(duì)于每個(gè)輸入數(shù)據(jù)輸出路徑數(shù),具體格式看Sample。
             

            Sample Input
            1
            3
            12
            -1
             

            Sample Output
            1 1 2
            2 3 10
            3 12 416024

            題目分析:
            假設(shè)小兔的棋盤是 8 × 8 的 ( 當(dāng)然你也可以假設(shè)是其他 )。如下圖:
            箭頭方向表示從該格子下一步能去的格子。因?yàn)椴荒艽┰綄?duì)角線,所有對(duì)角線上的格子只有進(jìn)去的箭頭,沒有出來的箭頭。


            觀察上圖你就可以發(fā)現(xiàn),其實(shí)這是一張關(guān)于對(duì)角線對(duì)稱的圖。所有我們只要求一個(gè)方向的值,然后乘以2即可。
            我們就拿下三角來考慮。不難發(fā)現(xiàn),所有在0列上的格子,路徑數(shù)都是 1 (只能從上面過來)。
            而其他格子則都是由上、左兩個(gè)方向過來,即:f(i, j) = f(i - 1, j) + f(i, j - 1);
            另外f(i, i) = f(i, j - 1)  或者 f(i, i) = f( i-1, j ) ;

            代碼如下:
            MiYu原創(chuàng), 轉(zhuǎn)帖請(qǐng)注明 : 轉(zhuǎn)載自 ______________白白の屋

            #include
            <iostream>
            using namespace std;
            typedef 
            long long int64;
            int64 f[
            37][37];
            int main()
            {
                
            int ca=0;
                
            int N;
                
            while ( cin >> N , N + 1 )
                {
                    
            ++ ca;
                    
            for ( int i = 1;i <= N; ++ i )
                    {
                          f[
            0][i] = 1;
                    }
                    
            for ( int i = 1; i < N; ++ i )
                    {
                          
            for ( int j = i; j <= N; ++ j )
                          {
                                
            if ( i == j )
                                {
                                     f[i][j] 
            = f[i-1][j];
                                }
                                
            else
                                {
                                     f[i][j] 
            = f[i-1][j] + f[i][j-1];
                                }
                          }
                    }
                    printf(
            "%d %d %I64d\n", ca, N, 2 * f[N-1][N] );
                }
                
            return 0;
            }

            另外看別人的解題報(bào)告說這個(gè)是卡特蘭數(shù) ( 詳細(xì)請(qǐng)查看 <<卡特蘭數(shù)>>  ), 其實(shí)現(xiàn)在還不理解, 分析如下:
            Catalan數(shù)。。
            令h(
            1)=1,h(0)=1,catalan數(shù)滿足遞歸式:
              h(n)
            = h(0)*h(n-1)+h(1)*h(n-2+  + h(n-1)h(0) (其中n>=2)
              另類遞歸式:
              h(n)
            =((4*n-2)/(n+1))*h(n-1);
              該遞推關(guān)系的解為:
              h(n)
            =C(2n,n)/(n+1) (n=1,2,3,…)

            附卡特蘭代碼:
            #include<stdio.h>
            int main()
            {
                __int64 a[
            37][37]={0};
                
            int i,j,n,t=0;
                a[
            0][0]=0;
                a[
            0][1]=1;
                a[
            1][1]=2;
                
            for(i=2;i<37;i++)
                {
                    a[i][
            0]=1;
                    
            for(j=1;j<i-1;j++)
                        a[i][j]
            =a[i][j-1]+a[i-1][j];
                    a[i][i
            -1]=a[i][i-2]+a[i-1][i-1]/2;
                    a[i][i]
            =2*a[i][i-2]+a[i-1][i-1];
             
                }
                
            while(scanf("%d",&n)&&n!=-1)
                {
                    printf(
            "%d %d %I64d\n",++t,n,a[n][n]);
                }
                
            return 0;
            }
            狠狠色丁香久久婷婷综合| 国产精品福利一区二区久久| 国产精品永久久久久久久久久 | 一个色综合久久| 国产精品久久婷婷六月丁香| 亚洲中文久久精品无码ww16| 精品久久久久久久无码| 久久精品成人一区二区三区| 国产69精品久久久久9999APGF| 91久久婷婷国产综合精品青草| 久久精品女人天堂AV麻| 久久久久国产精品熟女影院| 久久激情五月丁香伊人| 精品久久久久香蕉网| 久久久久一本毛久久久| 久久99热只有频精品8| 亚洲中文字幕伊人久久无码| 久久国产精品-国产精品| 久久天天躁夜夜躁狠狠| 精品综合久久久久久88小说| 久久久久亚洲av无码专区| 国产综合免费精品久久久| 久久66热人妻偷产精品9| 久久99这里只有精品国产| 亚洲精品高清国产一久久| 无码人妻少妇久久中文字幕蜜桃 | 欧美午夜A∨大片久久| 久久久久久国产精品无码超碰| 欧美久久天天综合香蕉伊| 久久99毛片免费观看不卡| 久久人爽人人爽人人片AV| 99久久国产精品免费一区二区| 欧美久久天天综合香蕉伊| 国内精品久久久久久久亚洲| 狠狠色噜噜狠狠狠狠狠色综合久久 | 97久久超碰成人精品网站| 亚洲精品乱码久久久久久蜜桃不卡| 久久噜噜久久久精品66| 久久免费99精品国产自在现线| 久久久中文字幕| 国产午夜精品久久久久九九|