正整数n的划分数

 

     将正整数n表示成一系列正整数之和.  n=n1+n2+n3+...+nk (n1>=n2>=n3>=nk>=1, k>=1)这就是正整数n的一个划分,正整数n不同的划分个数称为正整数n的划分数, 记作p(n)例如:

 

6 有如下11种划分则

p(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).

对于像我一样的新手来说,第一步要做的就是有想法,遇到一个算法题,连想不不用想的有两种情况:一种是高手,练的题目太多了,一看就知道,第二种就是和我一样的,想不出来,所以要做的就是分析问题,先有想法了然后再用代码实现了,大家可以贴出自己的想法或者代码,都行的。

 

 

 

 

 

#include<stdio.h> int resolve_value(int n, int m) { if((n==1)|| (m==1)) return 1; if(n==m) return resolve_value(n, m-1)+1; if(n>m) return resolve_value(n,m-1) + resolve_value(n-m, m); if(n<m) return resolve_value(n, n); } int main (void) { int value; int num; printf("输入要分解的数:"); scanf("%d",&value); num=resolve_value(value,value); printf("%d的划分数为%d/n",value,num); return 0; } 

你可能感兴趣的:(算法,n2)