• <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)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            中文精品99久久国产| 精品国产日韩久久亚洲| 久久国产色AV免费观看| 久久久久久亚洲精品成人| 久久亚洲综合色一区二区三区| 久久成人精品视频| 色播久久人人爽人人爽人人片AV| 久久国产热精品波多野结衣AV| 久久久久久青草大香综合精品| 天天躁日日躁狠狠久久| 国内精品欧美久久精品| 精品乱码久久久久久久| 四虎影视久久久免费| 久久久久国产精品| 久久亚洲日韩精品一区二区三区| 亚洲国产精品一区二区久久| 97精品国产97久久久久久免费| 国产精品丝袜久久久久久不卡| 久久久久AV综合网成人| 日本五月天婷久久网站| 精品99久久aaa一级毛片| 99久久久精品| 亚洲精品乱码久久久久久| 伊人久久大香线蕉成人| 久久一区二区三区免费| 色综合久久88色综合天天| 久久精品国产亚洲av日韩| 亚洲综合伊人久久大杳蕉| 蜜桃麻豆WWW久久囤产精品| 久久成人精品| 日韩欧美亚洲国产精品字幕久久久| 国产精品日韩欧美久久综合| 亚洲嫩草影院久久精品| 久久久久久久尹人综合网亚洲 | 色偷偷888欧美精品久久久| 久久精品国产亚洲av麻豆色欲| 2021国产精品久久精品| 久久人人青草97香蕉| 国产69精品久久久久APP下载| 久久婷婷色综合一区二区| 久久精品卫校国产小美女|