算法分析与设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
专业:
班级:
学号:
姓名:
日期:2014年11月10日
m)。可以建立q(n ,m)的如下递归关系。 1、q(n ,1)=1,n>=1。
当最大加数n1不大于1时,任何正整数n 只有一种划分形式,即
48476Λn n 111+++=。
2、q(n ,m)=q(n ,n),m>=n 。
最大加数n1实际上不能大于n ,因此,q(1,m)=1。 3、q(n ,n)=1+q(n ,n-1)。
正整数n 的划分由n1=n 的划分和n1<=n-1的划分组成。 4、q(n ,m)= q(n ,m-1)+q(n-m ,m),n>m>1。
正整数n 的最大加数n1不大于m 的划分由n1=m 的划分和n1<=m-1的划分组成。 (2)、算法描述
public class 张萌 { /**
* @param args */
public static void main(String[] args) {
ri)perm(X)表示在全排列perm(X)每一
个排列前加上前缀ri ,得到的排列。R 的全排列可归纳定义为如下: 当n=1时,perm (R )=(r ),其中r 是集合R 中唯一的元素;
当n>1时,perm (R )由(r1)perm (R1),(r2)perm (R1)………,(rn )quan (Rn )构成。 (2)、算法描述
public class 张萌 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub String []list={"a","b","c","d"};
perm(list,0,;
}
public static void perm(Object[]list,int k,int m) {
if(k==m)
{
for(int i=0;i<=m;i++)
} else
for(int i=k;i<=m;i++)
{
(list,k,i);
perm(list,k+1,m);
(list,k,i);
}
}
public static class MyMath
{
public static void swap(Object[] list, int k, int i)
{
// TODO Auto-generated method stub
Object t;
t=list[k];
list[k]=list[i];
list[i]=t;
}
}
}
(3)、运行结果
五、出现的问题及解决的方法
通过这次实验,我学会了利用Java写简单的程序,掌握了递归算法的基本原理。