国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

OpenJudge 簡(jiǎn)單的整數(shù)劃分問(wèn)題(遞歸)

2019-11-11 00:05:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
總時(shí)間限制: 100ms 內(nèi)存限制: 65536kB描述

將正整數(shù)n 表示成一系列正整數(shù)之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。正整數(shù)n 的這種表示稱為正整數(shù)n 的劃分。正整數(shù)n 的不同的劃分個(gè)數(shù)稱為正整數(shù)n 的劃分?jǐn)?shù)。

輸入標(biāo)準(zhǔn)的輸入包含若干組測(cè)試數(shù)據(jù)。每組測(cè)試數(shù)據(jù)是一個(gè)整數(shù)N(0 < N <= 50)。輸出對(duì)于每組測(cè)試數(shù)據(jù),輸出N的劃分?jǐn)?shù)。樣例輸入
5樣例輸出
7提示

5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1+1

思路:

根據(jù)n和m的關(guān)系,考慮以下幾種情況:   (1)當(dāng)n=1時(shí),不論m的值為多少(m>0),只有一種劃分即{1};   (2)當(dāng)m=1時(shí),不論n的值為多少,只有一種劃分即n個(gè)1,{1,1,1,...,1};   (3)當(dāng)n=m時(shí),根據(jù)劃分中是否包含n,可以分為兩種情況:      (a)劃分中包含n的情況,只有一個(gè)即{n};      (b)劃分中不包含n的情況,這時(shí)劃分中最大的數(shù)字也一定比n小,即n的所有(n-1)劃分。      因此 f(n,n) =1 + f(n,n-1);   (4)當(dāng)n<m時(shí),由于劃分中不可能出現(xiàn)負(fù)數(shù),因此就相當(dāng)于f(n,n);   (5)但n>m時(shí),根據(jù)劃分中是否包含最大值m,可以分為兩種情況:       (a)劃分中包含m的情況,即{m, {x1,x2,...xi}}, 其中{x1,x2,... xi} 的和為n-m,因此這情況下          為f(n-m,m)       (b)劃分中不包含m的情況,則劃分中所有值都比m小,即n的(m-1)劃分,個(gè)數(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 sp(int n,int m) {	if(n==1||m==1) return 1;	else if(n<m) return sp(n,n);	else if(n==m) return sp(n,n-1)+1;	else return sp(n,m-1)+sp(n-m,m);}int main() {	int n;	while(cin>>n) {		cout<<sp(n,n)<<endl;	}	return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宜兰市| 临泽县| 仪征市| 竹山县| 彭州市| 吐鲁番市| 阜南县| 卢龙县| 嘉峪关市| 芮城县| 哈巴河县| 福海县| 汕尾市| 祁连县| 垣曲县| 芜湖市| 故城县| 陇西县| 育儿| 万载县| 宜阳县| 呼伦贝尔市| 吉木乃县| 东兰县| 青海省| 宁武县| 资中县| 泊头市| 博野县| 曲沃县| 新兴县| 长汀县| 沿河| 理塘县| 顺平县| 鄢陵县| 漳浦县| 沅陵县| 咸阳市| 外汇| 调兵山市|