• <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;
            }
            中文字幕无码久久久| 久久综合久久自在自线精品自| 国产一级持黄大片99久久| 狠狠色丁香婷综合久久| 伊人色综合久久| 久久99久久99精品免视看动漫| 亚洲午夜久久久久久久久电影网| .精品久久久麻豆国产精品| 国产激情久久久久影院小草| 中文字幕亚洲综合久久菠萝蜜| 久久久久国产精品熟女影院| 久久人妻少妇嫩草AV蜜桃| 久久精品国产亚洲AV无码麻豆| 久久久久女教师免费一区| 色综合久久无码五十路人妻| 久久er国产精品免费观看8| 新狼窝色AV性久久久久久| 久久国产精品偷99| 国产国产成人精品久久| 久久久噜噜噜久久中文字幕色伊伊| 亚洲国产成人久久综合碰碰动漫3d| 久久久一本精品99久久精品88| 国产精品99久久精品爆乳| 99久久免费国产特黄| 亚洲狠狠婷婷综合久久蜜芽| 99久久精品国产毛片| 国内精品久久久久久久97牛牛| 亚洲精品tv久久久久久久久久| 伊人丁香狠狠色综合久久| 欧美黑人又粗又大久久久| 久久国产亚洲精品| 内射无码专区久久亚洲| 欧美久久天天综合香蕉伊| 精品无码久久久久久国产| 久久99热狠狠色精品一区| 国产一区二区精品久久| 狠狠色丁香婷综合久久| 久久国产精品一区二区| 久久久久久久99精品免费观看| 久久久一本精品99久久精品88| 777午夜精品久久av蜜臀|