• <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>
            voip
            風的方向
            厚德致遠,博學敦行!
            posts - 52,comments - 21,trackbacks - 0
                    以前做過這么一個題目,在我們學校ACM網上,找了很久沒找到,郁悶!網上走了一遭,基本和書上介紹的差不多,雖然做過但是重新去看思路的時候還是比較慢!!!我再寫一下,加深影響!
                     整數劃分就是將一個正整數表示成一系列正整數之和,問有多少種不同劃分方案!
                     例如整數6可以劃分成一下11中方案:
                    6
                    5 + 1
                    4 + 2, 4 + 1 + 1
                    3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1
                    2 + 2 + 2, 2 + 2 + 1 + 1, 2 + 1 + 1 + 1 + 1
                    1 + 1 + 1 + 1 + 1 + 1 
                   如果你是編程好手看到這樣的排列,可能一下子就能想到一種解題思路了!感慨,算法就是在培養解決問題的思路!!言歸正傳!先介紹下書上的思路:
                                 一、p(n,m)含義:在正整數n的所有不同劃分中,最大加數不大于m的劃分數(m<=n;m,n>=1)!求整數6有幾種劃分時,既求p(6,6)。。。
                                 二、函數遞歸關系:
                                        1、n<1||m<1,return 0;
                                        2、n==1||m==1,p(n,m)=1;
                                        3、n<m,p(n,m)=p(n,n);例如:p(6,10)=p(6,6)   
                                        4、n>m,p(n,m)=p(n,m-1)+p(n-m,m);例如:p(6,5)=p(6,4)+p(2,4); p(6,2)=p(6,1)+p(4,2);(這個等式是關鍵)
            代碼如下
            #include<cstdio>
            int q(int n,int m)
            {
                
            if((n<1)||(m<1)) return 0;
                
            if(n==1||m==1return 1;
                
            if(n<m) return q(n,n);
                
            if(n==m) return q(n,m-1)+1;
                
            return q(n,m-1)+q(n-m,m);
            }


            int main()
            {
                printf(
            "%d\n", q(6,6));
                
            return 0;
            }

                  寫完書上的解題思路,我突然發現前面我想到的一種解題思路錯了!!不過這種遞歸算法運行效率低,計算整數35分解方案數的時候,計算速度很慢(大概兩秒出現答案14930352),40的時候更慢了- -,我想用二維數組填表的方式應該會快一點!!有更好算法的可以留言!!隨時候教~~
                  
            posted on 2010-08-31 15:25 jince 閱讀(2461) 評論(2)  編輯 收藏 引用 所屬分類: 算法設計與分析

            FeedBack:
            # re: 整數劃分
            2012-06-03 12:09 | JsDoItao
            return q(n,m-1)+q(n-m,n-m);
            上面有錯誤,完全忽視了加數由大到小有序,
            最后n>m的情況,分成1)最大加數為m和2)最大加數<=m-1兩種情況,對于2)其劃分數是q(n,m-1)沒錯,但是對于1)因為限定了最大的加數為m,所以必須是q(n-m,m),而不是q(n-m,n-m),這個只對m>n-m的情況有效,但是如果m<n-m,那么你就計算錯了~~
            :-)


              回復  更多評論
              
            # re: 整數劃分[未登錄]
            2012-06-03 14:11 | jince
            @JsDoItao
            嗯,在遞歸關系中的等式是正確的。  回復  更多評論
              
            哈哈哈哈哈哈
            久久精品欧美日韩精品| 国产综合久久久久| 欧美日韩精品久久免费| 国产午夜福利精品久久2021 | 日韩欧美亚洲综合久久影院d3| 日本久久久精品中文字幕| 久久经典免费视频| 色偷偷888欧美精品久久久| 久久青青色综合| Xx性欧美肥妇精品久久久久久| 久久精品国产久精国产果冻传媒| 久久国产乱子精品免费女| 久久99热这里只有精品66| 99久久国产主播综合精品| 久久婷婷五月综合97色 | 伊人色综合九久久天天蜜桃| 久久精品毛片免费观看| 伊人久久大香线蕉综合Av| 久久强奷乱码老熟女网站| 麻豆精品久久精品色综合| 欧美噜噜久久久XXX| 97香蕉久久夜色精品国产 | 久久只这里是精品66| 久久国产精品视频| 久久久久国产一级毛片高清版| 久久夜色精品国产噜噜噜亚洲AV| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久人妻AV中文字幕| 一级做a爰片久久毛片毛片| 久久青青草原精品国产软件| 国产呻吟久久久久久久92| 国产精品久久久久久久久鸭 | 俺来也俺去啦久久综合网| 色婷婷综合久久久久中文一区二区| 亚洲午夜久久久| 久久综合亚洲鲁鲁五月天| 国产精品久久新婚兰兰| 久久热这里只有精品在线观看| 97久久婷婷五月综合色d啪蜜芽| 伊人久久成人成综合网222| 久久久久久亚洲精品影院|