欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C語言之整數(shù)劃分問題(遞歸法)實(shí)例代碼

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

C語言之整數(shù)劃分問題(遞歸法)實(shí)例代碼

整數(shù)劃分問題是算法中的一個經(jīng)典命題之一,有關(guān)這個問題的講述在講解到遞歸時基本都將涉及。所謂整數(shù)劃分,是指把一個正整數(shù)n寫成如下形式:

    n=m1+m2+...+mi; (其中mi為正整數(shù),并且1 <= mi <= n),則{m1,m2,...,mi}為n的一個劃分。

如果{m1,m2,...,mi}中的最大值不超過m,即max(m1,m2,...,mi)<=m,則稱它屬于n的一個m劃分。這里我們記n的m劃分的個數(shù)為f(n,m);

例如但n=4時,他有5個劃分,{4},{3,1},{2,2},{2,1,1},{1,1,1,1};

注意4=1+3 和 4=3+1被認(rèn)為是同一個劃分。

該問題是求出n的所有劃分個數(shù),即f(n, n)。下面我們考慮求f(n,m)的方法;

1.遞歸法:

   根據(jù)n和m的關(guān)系,考慮以下幾種情況:

   (1)當(dāng)n=1時,不論m的值為多少(m>0),只有一種劃分即{1};

   (2)當(dāng)m=1時,不論n的值為多少,只有一種劃分即n個1,{1,1,1,...,1};

   (3)當(dāng)n=m時,根據(jù)劃分中是否包含n,可以分為兩種情況:

      (a)劃分中包含n的情況,只有一個即{n};

      (b)劃分中不包含n的情況,這時劃分中最大的數(shù)字也一定比n小,即n的所有(n-1)劃分。

      因此 f(n,n) =1 + f(n,n-1);

   (4)當(dāng)n<m時,由于劃分中不可能出現(xiàn)負(fù)數(shù),因此就相當(dāng)于f(n,n);

   (5)但n>m時,根據(jù)劃分中是否包含最大值m,可以分為兩種情況:

       (a)劃分中包含m的情況,即{m, {x1,x2,...xi}}, 其中{x1,x2,... xi} 的和為n-m,因此這情況下

          為f(n-m,m)

       (b)劃分中不包含m的情況,則劃分中所有值都比m小,即n的(m-1)劃分,個數(shù)為f(n,m-1);

      因此 f(n, m) = f(n-m, m)+f(n,m-1);

      綜上所述:

       f(n, m)=  1;       (n=1 or m=1)

        f(n,m)  =  f(n, n);          (n<m)

               1+ f(n, m-1);       (n=m)

               f(n-m,m)+f(n,m-1);     (n>m)


#include<iostream>
using namespace std;

int equationCount(int n,int m)
{
  if(n==1||m==1)
    return 1;
  else if(n<m)
    return equationCount(n,n);
  else if(n==m)
    return 1+equationCount(n,n-1);
  else
    return equationCount(n,m-1)+equationCount(n-m,m);
}

int main(void)
{
  int n;
  while(scanf("%d",&n)!=EOF&&(n>=1&&n<=120))
  {
    printf("%d\n",equationCount(n,n));
  }
  return 0;
}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有