早教吧 育儿知识 作业答案 考试题库 百科 知识分享

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

题目详情
整数划分问题
将以正整数n表示成一系列正整数之和.n=n1+n2+n3+...+nk (n1>=n2>=n3>=nk>=1,k>=1)这就是正整数n的一个划分,正整数n不同的划分个数称为正整数n的划分数,记作p(n)例如:6 有如下11种划分则p(6)=116;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).
麻烦有能力的朋友帮我下 请您用JAVA语言做!
▼优质解答
答案和解析
我这里有个C语言的,是输出所有划分的.
你自己尝试一下改成JAVA的吧.
#include "stdio.h"
void main()
{
int n;
scanf("%d",&n);
if (n == 1)
{
printf("1=1\n");
return;
}
if (n == 2)
{
printf("2=1+1\n");
return;
}
int *a = new int(n);
int top = 0;
a[0] = n - 1;
a[1] = 1;
top = 2;
int i;
do{
printf("%d=%d",n,a[0]);
for (i = 1; i < top; i++)
{
printf("+%d",a[i]);
}
printf("\n");
int s = 0;
do{
s += a[--top];
}while (top >= 0 && a[top] == 1);
if (top == -1)
{
break;
}
int d = a[top] - 1;
if (d == 1)
{
while (s > 0)
{
a[top++] = 1;
s--;
}
}
else
{
do{
a[top++] = d;
s -= d;
}while (s >= d);
if (s != 0)
{
a[top++] = s;
}
}
}while (1);
}
看了 整数划分问题将以正整数n表示...的网友还看了以下:

如图,正比例函数y=k1x与反比例函数y=x分之k2交于点A如图正比例函数y=k1x与反比例函数y  2020-04-05 …

判断:1:分母一定.分子和分数值成正比例2:圆锥的高与它的体积不可能成正比例.3:小李的身高与体重  2020-04-27 …

求解一道表面积变化的应用题.一个正方体,如果将它高增加4CM,就成为一个长方体,且表面积增加8.0  2020-04-27 …

若变量y与x成正比例,变量x又与z成反比例,则y与z的关系是()A.成反比例B.成正比例C.y与z  2020-05-19 …

若变量y与x成正比例,变量x又与z成反比例,则y与z的关系是()A.成反比例B.成正比例C.y与z  2020-05-19 …

同一时间同一地点楼房和它的影子是不是正比例为什么?楼房的高度和影子的长度!到底成()什么关系?正比  2020-06-05 …

比例的意义是什么正比例.两种相关联的量,一种量变化,另一种量也随着变化,如果这两种量中相对应的两个  2020-06-08 …

一个正方形,如果边长增加12厘米,现在这个正方形面积就是原来的4倍,原来这个正方形的面积是多少?如  2020-06-21 …

如果一个正方形的四个顶点都在三角形的三条边上,称该正方形是该三角形的内接正方形,若锐角△ABC的面  2020-08-03 …

如果一个正方形的四个顶点都在三角形的三条边上,称该正方形是该三角形的内接正方形,若锐角△ABC的面  2020-08-03 …