• <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)  編輯 收藏 引用 所屬分類: 組合數學動態規劃給我啟發題
            <2011年3月>
            272812345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            欧美一区二区三区久久综合| 久久久国产精品亚洲一区| 久久精品国产99久久香蕉| 久久久久亚洲精品中文字幕| 久久久久人妻一区二区三区| 国产精品99久久免费观看| 国产亚洲精久久久久久无码AV| 久久亚洲视频| 99久久99这里只有免费费精品| 久久精品国产99国产精偷| 伊人久久大香线蕉精品不卡| 国产精品美女久久久| 久久夜色精品国产亚洲av| 久久国产精品成人影院| 欧美久久一级内射wwwwww.| 久久久av波多野一区二区| 伊人久久亚洲综合影院| 久久中文娱乐网| 亚洲精品乱码久久久久久蜜桃图片 | 蜜臀久久99精品久久久久久小说| 久久精品国产精品国产精品污| 久久久久亚洲av毛片大| 国产欧美久久久精品| 欧洲精品久久久av无码电影| 久久婷婷五月综合成人D啪| 精品久久久久久久| 久久这里只有精品18| 狠狠色狠狠色综合久久 | 国产精品久久久久免费a∨| 久久精品嫩草影院| 国产精品久久永久免费| 久久精品aⅴ无码中文字字幕不卡| 精品久久久无码人妻中文字幕| 久久久久久亚洲精品无码| 91精品观看91久久久久久| 久久国产精品久久| 久久精品国产99国产精偷| 久久久精品午夜免费不卡| 天天久久狠狠色综合| 国产成人久久777777| 99久久精品免费|