您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验报告格式----整数划分问题
上机实验报告课程名称:算法设计与分析班级:实验日期:姓名:aina学号:指导教师:实验名称:整数划分问题实验序号:实验成绩:一、实验目的及要求运用计算机语言Java,编写程序,解决整数划分问题二、实验环境WINDOWSXP,Eclipse***三、实验内容在Java中编程求解整数划分问题将正整数n表示成一系列正整数之和,knnnn...21)1,1...(21knn,nk其中正整数n的这种表示称为正整数n的划分。它的不同的划分个数称为正整数n的划分数,记作p(n)四、算法描述及实验步骤在正整数的所有不同的划分中,将最大加数不大于的划分个数记作。可以建立的如下递归关系。(1)1,1)1,(nnq当最大加数n1不大于1时,任何正整数n只有一种划分形式。即nn1...11(2)nmnnqmnq),,(),(最大加数n1实际上不能大于n。因此,1(3))1,(1),(nnqnnq正整数n的划分由nn1的划分和11nn的划分组成。(4)1),,()1,(),(mnmmnqmnqmnq正整数n最大加数n1不大于m的划分mn1由的划分和11mn的划分组成。以上的关系实际上给出了计算),(mnq的递归式如下:11,1),()1,()1,(1),(1),(mnmnmnmnmmnqmnqnnqnnqmnq由上分析,可写出如下算法:主文件:#includeiostream.h#include整数划分.hvoidmain(){intn;cout输入一个整数n=;cinn;coutq(n,n)\n;}头文件:#includeiostream.hintq(intn,intm){if((n1)||(m1))return0;if((n==1)||(m==1))2return1;if(nm)returnq(n,n);if(n==m)returnq(n,m-1)+1;returnq(n,m-1)+q(n-m,m);}五、调试过程及实验结果调试成功后,得到--------------------Configuration:main-Win32Debug--------------------Compiling...Skipping...(norelevantchangesdetected)main.cppmain.obj-0error(s),0warning(s)运行程序:输入6可得如下结果:3输入20可得如下结果:六、总结这次实验让我学会了如何用Java语言编写程序解决划分问题。七、附录(源程序清单)主文件:#includeiostream.h#include整数划分.hvoidmain(){intn;cout输入一个整数n=;cinn;coutq(n,n)\n;}4头文件:#includeiostream.hintq(intn,intm){if((n1)||(m1))return0;if((n==1)||(m==1))return1;if(nm)returnq(n,n);if(n==m)returnq(n,m-1)+1;returnq(n,m-1)+q(n-m,m);}
本文标题:实验报告格式----整数划分问题
链接地址:https://www.777doc.com/doc-3842222 .html