打火机电子电击睾丸:JAVA编程!!急急急!!!再插三根鸡毛!!!!·

来源:百度文库 编辑:中科新闻网 时间:2024/05/08 04:20:52
整数划分问题:写出将一个正整数年n表示成一系列正整数之和的JAVA程序。

求求大家了 我实在是不会了~~!!
拜托拜托~!!!!!
整数划分问题:写出将一个正整数n表示成一系列正整数之和的JAVA程序。

比如6 划分为六个一相加,或者三个2相加,或者1+2+3
就是这样了

呵呵

试试这个程序.大概思路是这样的.细节可能有错.我还没运行过.自己改一下吧
import java.util.*;
public class lin
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);

System.out.print("input the year:");
int n=in.nextInt();

int[] factor=new int[100];
int[] exps=new int[100];

for(int i=0,work=n;(work&0X01UL)==0&&work>1;work>>=1,i++)
;
save_factor(2,i);
for(int k=3;k<=work;k+=2)
{for(i=0;work%k==0&&work>1;work/k,i++)
save_factor(k,i);
}

public static void save_factor(fact,exp)
{
int i;
if(exp>0)
factor[count]=fact, exps[count++]=i;
}

for(i=0;i<count;i++)
{
S+=factors[i]*exps[i];
}

System.out.println("");
System.out.print("result"+S);

}

可以这么来理解:
如果给定一个数N,那么它最多由n个1相加得到N,所以它最多的‘根’为n个,为此,可以将该问题看成是对一个方程的求解X1+X2+...+Xn=N,其中X1,X2,...,Xn为正整数

具体的代码实现相信应该没什么问题吧,其复杂度是可以接受的
不知你是否理解了

再说详细些

详细点

什么意思?没看明白,尽量写的详细点

递归算法?