• <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>
            posts - 195,  comments - 30,  trackbacks - 0

            One curious child has a set of N little bricks. From these bricks he builds different staircases. Staircase consists of steps of different sizes in a strictly descending order. It is not allowed for staircase to have steps equal sizes. Every staircase consists of at least two steps and each step contains at least one brick. Picture gives examples of staircase for N=11 and N=5:

            Your task is to write a program that reads from input numbers N and writes to output numbers Q - amount of different staircases that can be built from exactly N bricks.


            Input

            Numbers N, one on each line. You can assume N is between 3 and 500, both inclusive. A number 0 indicates the end of input.

             

             


            Output

            Numbers Q, one on each line.

             


            Sample Input

            3
            5
            0
            

            Sample Output

            1
            2
            
            方法1,動態規劃

            #include<iostream>
            #include<cstdlib>
            using namespace std;
              int main()
              {
              freopen("s.txt","r",stdin);
              freopen("key.txt","w",stdout);
              double f[501][501]={0};
              double s;
              int i,j,k,n;
              for(i=3;i<=500;i++)
              for(j=1;j<=(i-1)/2;j++)
                f[i][j]=1;
              for(i=3;i<=500;i++)
                for(j=1;j<=(i-1)/2;j++)
                {
             for(k=j+1;k<=(i-j-1)/2;k++)
               f[i][j]=f[i-j][k]; 
             }
                while(scanf("%d",&n),n) {
                    s=0;
                    for(i=1;i<=(n-1)/2;i++) s+=f[n][i]; //f[n]=f[n][1]+f[n][2]+-----+f[n][floor((i-1)/2)]
                    printf("%.0f\n",s);
                }
              //system("PAUSE");
              return   0;
              }
            更妙的方法:生成函數法
            計算(1+x)(1+x^2)(1+x^3)-----,x^n的系數即為所求
            int i,j;
            double ans[510]={1,1};//已經把ans[1]和ans[0]賦為1了,其余為0
             for(i=2;i<=500;i++) {  
                    for(j=500;j>=0;j--) { 
                        if(i+j<=500) ans[i+j]+=ans[j];
                    } 
                } 

            先計算(1+x)(1+x^2)
            再計算(1+x)(1+x^2)   *(1+x^3)
            posted on 2009-06-27 10:44 luis 閱讀(425) 評論(0)  編輯 收藏 引用 所屬分類: 組合數學 、動態規劃 、給我啟發題
            <2010年12月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久久亚洲精品蜜桃臀| 久久午夜无码鲁丝片秋霞 | 国产综合久久久久| 国产偷久久久精品专区 | 四虎久久影院| 久久综合五月丁香久久激情| 久久一本综合| 亚洲国产精品综合久久一线| 香蕉久久久久久狠狠色| 亚洲欧美成人久久综合中文网| 久久综合伊人77777| 尹人香蕉久久99天天拍| 狠狠色丁香久久婷婷综合| 久久婷婷五月综合色奶水99啪| 久久久久亚洲AV片无码下载蜜桃| 精品蜜臀久久久久99网站| 99久久成人国产精品免费| 国产精品九九久久免费视频 | 久久天天婷婷五月俺也去| 国产精品99久久久精品无码| 精品久久8x国产免费观看| 91久久精品国产免费直播| 亚洲国产成人久久笫一页| 精品无码久久久久久尤物| 久久久久国产一级毛片高清板| 亚洲欧美成人久久综合中文网| 色婷婷综合久久久久中文一区二区| 久久国产色AV免费观看| 久久久久久极精品久久久| 亚洲AV无码久久精品色欲| 久久精品国产69国产精品亚洲| 久久精品国产WWW456C0M| 久久天堂AV综合合色蜜桃网| 国产成人无码精品久久久久免费| 久久青青色综合| 中文字幕亚洲综合久久| 色婷婷久久综合中文久久蜜桃av | 久久久久久国产精品无码下载 | 国产精品成人久久久| 99久久伊人精品综合观看| 午夜欧美精品久久久久久久|