《算法实验报告一(共4页).doc》由会员分享,可在线阅读,更多相关《算法实验报告一(共4页).doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上算法设计与分析课程实验报告专 业:计算机科学与技术 班 级: 学 号: 姓 名: 日期:2014 年 10月18 日一、 实验题目熟悉环境和递归算法二、 实验目的1、熟悉Java上机环境;2、基本掌握递归算法的原理方法.三、 实验内容1、将正整数n表示成一系列正整数之和:n=n1+n2+nk,其中n1n2nk1,k1。正整数n的这种表示称为正整数n的划分。求正整数n的不同划分个数。 2、 设计一个递归算法生成n个元素r1,r2,rn的全排列。3、 Hanoi塔问题设a,b,c是3个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从
2、小到大编号为1,2,n,现要求将塔座a上的圆盘移到塔座b上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则:规则1:每次只能移动1个圆盘;规则2:任何时刻都不允许将较大的圆盘压在较小的圆盘之上;规则3:在满足移动规则1和2的前提下,可将圆盘移至a,b,c中任一塔座上。四、 实验步骤1、 题目一(1) 问题分析在正整数n的所有不同的划分中,将最大加数n1不大于m的划分个数记作q(n,m)。可以建立q(n,m) 的如下递归关系:q(n,m)= 1 n=1,m=1 q(n,n) nm1据此可设计递归算法。(2) 算法描述 package com.kong;public class 实验一一 /*
3、 * param args */ TODO Auto-generated method stubSystem.out.println(结果为:+q(5,6);public static void main(String args) public static int q(int n, int m) if (n1)|(m1) return 0;if (n=1)|(m=1) return 1;if(n1时,perm(R)由(r1)perm(R1),(r2)perm(R2),(rn)perm(Rn)构成。(2) 算法描述public class 实验一一一 /* * param args */pub
4、lic static void main(String args) / TODO Auto-generated method stubchar c=1,2,3;sort (c,0,c.length-1);public static void sort (charc,int k,int m)if(k=m)for(int i=0;i=m;i+)System.out.print(ci);System.out.println();elsefor(int i=0;i1时,加入c,将n-1个较小的圆盘依次移动规则从a到c,然后将剩下的最大圆盘从a移至b,最后在设法将n-1个较小的圆盘依次移动规则从c到b。
5、即将n个圆盘的问题分为两个n-1个圆盘的移动问题,以此类推。(2) 算法描述 package com.kong;public class 试验一 /* * param args */public static void main(String args) / TODO Auto-generated method stubhanoi(3, a, b, c);public static void hanoi(int n, char a, char b, char c) if (n 0) hanoi(n-1, a, c, b);Move(a, b);hanoi(n-1, c, b, a);private static void Move(char a, char b) System.out.println(从 + a + 移到 + b);(3) 运行结果 五、 出现的问题及解决的方法问题:试验3hanoi调试错误解决方法:算法需要定义move函数,才能实现函数的调用;问题:出现未定义字母解决方法:检查代码是否有错误,是否正确定义并改正。专心-专注-专业