算法分析与设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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写简单的程序,掌握了递归算法的基本原理。

相关文档
最新文档