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

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

            FeedBack:
            # re: 整數(shù)劃分
            2012-06-03 12:09 | JsDoItao
            return q(n,m-1)+q(n-m,n-m);
            上面有錯(cuò)誤,完全忽視了加數(shù)由大到小有序,
            最后n>m的情況,分成1)最大加數(shù)為m和2)最大加數(shù)<=m-1兩種情況,對(duì)于2)其劃分?jǐn)?shù)是q(n,m-1)沒(méi)錯(cuò),但是對(duì)于1)因?yàn)橄薅俗畲蟮募訑?shù)為m,所以必須是q(n-m,m),而不是q(n-m,n-m),這個(gè)只對(duì)m>n-m的情況有效,但是如果m<n-m,那么你就計(jì)算錯(cuò)了~~
            :-)


              回復(fù)  更多評(píng)論
              
            # re: 整數(shù)劃分[未登錄](méi)
            2012-06-03 14:11 | jince
            @JsDoItao
            嗯,在遞歸關(guān)系中的等式是正確的。  回復(fù)  更多評(píng)論
              
            哈哈哈哈哈哈
            国内精品久久人妻互换| 国产免费久久精品99re丫y| 久久精品国产亚洲AV久| 久久亚洲国产成人影院网站 | 夜夜亚洲天天久久| 九九热久久免费视频| 国内精品久久久久影院亚洲| 久久免费香蕉视频| 久久无码AV中文出轨人妻| 久久久国产乱子伦精品作者| 2021精品国产综合久久| 偷偷做久久久久网站| 欧美久久一区二区三区| 久久人人爽人人爽AV片| 欧美一级久久久久久久大| 亚洲嫩草影院久久精品| 精品久久久久久久| AAA级久久久精品无码片| 国产成人无码久久久精品一| 久久天天躁狠狠躁夜夜不卡| 久久久久久伊人高潮影院| 94久久国产乱子伦精品免费 | 亚洲狠狠综合久久| 999久久久无码国产精品| 久久精品国产亚洲av麻豆图片| 精品国产乱码久久久久久郑州公司| 久久人妻AV中文字幕| 久久99精品久久久久久| 国产69精品久久久久9999| 国产精品成人99久久久久| 久久人人爽人人爽人人av东京热 | 亚洲AⅤ优女AV综合久久久| 久久久久久综合一区中文字幕| 国产成人精品免费久久久久| 欧美精品九九99久久在观看| 青青青伊人色综合久久| 久久亚洲国产精品成人AV秋霞 | 国内精品久久国产大陆| 亚洲精品美女久久久久99小说| 欧洲性大片xxxxx久久久| 精品免费久久久久国产一区|