计算机算法与设计分析实验的报告
计算机算法与设计分析
实
验
报
告
班级:
姓名:
学号:
实验一 分治与递归
一:基本递归算法
一、实验目的与要求
熟悉C/C++语言的集成开发环境;
通过本实验加深对递归过程的理解
二、实验题:
任意输入一个整数,输出结果能够用递归方法实现整数的划分。
三、程序代码
四、实验结果
二:二分搜索
一、实验目的与要求
1、熟悉二分搜索算法;
2、初步掌握分治算法;
二、实验题
设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素的位置I和大于x的最大元素位置j。当搜索元素在数组中时,I和j相同,均为x在数组中的位置。
三、程序代码
四、实验结果
实验二 动态规划算法
一:最长公共子序列问题
一、实验目的与要求
1、熟悉最长公共子序列问题的算法;
2、初步掌握动态规划算法;
二、实验题
若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。
给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。
三、程序代码
四、实验结果
二:最大子段和问题
一、实验目的与要求
1、熟悉最长最大字段和问题的算法;
2、进一步掌握动态规划算法;
二、实验题
若给定n个整数组成的序列a1,a2,a3,……an,求该序列形如ai+ai+1+……+an的最大值。
三、程序代码
四、实验结果
实验三 贪心算法
一:多机调度问题
一、实验目的与要求
1、初步掌握贪心算法
2、熟悉多机调度问题的算法;
二、实验题
要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。约定,每个作业均可在任何一台机器上加工处理,但未完工前不允许中断处理。作业不能拆分成更小的子作业。
三、程序代码
四、实验结果
二:?用贪心算法求解加油问题
一、实验目的与要求
熟悉贪心算法的基本原理与适用范围。
使用贪心算法编程。
二、实验题
一辆车加满油后可行驶n km。旅途中有若干加油站。设计一个有效算法,指出应当在哪些加油站停靠加油,使得沿途加油次数最少。对于给定的n和k个加油站位置,编程计算最少加油次数。
三、程序代码
四、实验结果
?实验四 回溯算法和分支限界法
一:符号三角形问题
一、实验目的与要求
1、掌握符号三角形问题的算法;
2、初步掌握回溯算法;
二、实验题
下面都是“-”。 下图是由14个“+”和14个“-”组成的符号三角形。2个同号下面都是“+”,2个异号下面都是“-”。 ?在一般情况下,符号三角形的第一行有n个符号。符号三角形问题要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相
三、程序代码
四、实验结果
二:0—1背包问题
一、实验目的与要求
1、掌握0—1背包问题的回溯算法;
2、进一步掌握回溯算法;
二、实验题
给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?
三、程序代码
四、实验结果
计算机算法分析与设计——实验报告
9