《算法设计与分析》课程实验报告专 业: 网络 工程 班 级: 1220551 学 号: 15 姓 名: 王 晓鑫 日期: 2025 年 10 月 20 日一、 实验题目熟悉环境和递归算法二、 实验目的(1)熟悉 Java 上机环境;(2)基本掌握递归算法的原理方法
三、 实验内容1、 将正整数 n 表示成一系列正整数之和: n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1
正整数 n 的这种表示称为正整数 n 的划分
求正整数 n 的不同划分个数
2、 设计一个递归算法生成 n 个元素{r1,r2,…,rn}的全排列
3、 Hanoi 塔问题设 a,b,c 是 3 个塔座
开始时,在塔座 a 上有一叠共 n 个圆盘,这些圆盘自下而上,由大到小地叠在一起
各圆盘从小到大编号为 1,2,…,n,现要求将塔座 a 上的圆盘移到塔座 b 上,并仍按同样顺序叠置
在移动圆盘时应遵守以下移动规则:规则 1:每次只能移动 1 个圆盘;规则 2:任何时刻都不允许将较大的圆盘压在较小的圆盘之上;规则 3:在满足移动规则 1 和 2 的前提下,可将圆盘移至 a,b,c 中任一塔座上
四、实验步骤1、 题目一(1) 问题分析正整数 n 的不同的划分个数称为正整数 n 的划分数,记作 p(n)
在正整数 n 的所有不同的划分中,将最大加数 n1 不大于 m 的划分个数记作q(n,m)
可以建立 q(n,m)的如下递归关系
① :q(n,1)=1,n≥1
当最大加数 n1 不大于 1 时,任何正整数 n 只有一种划分形式
② :q(n,m)=q(n,n),m≥n
最大加数 n1 实际上不能大于 n
因此,q(1,m)=1
③ : q(n,n)=1+q(n,n-1)
正整数 n 的划分由 n1=n 的划分和 n1≤n-1 的划分组成
④ :q(n,m)=q(n,m—1)+q(n-m,m