算法实验_中科大

  • 格式:doc
  • 大小:36.50 KB
  • 文档页数:4

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验部分

一、要求

1.算法设计与分析班实验课统一上课分为三次,分别在2013年10月9号(第六周周三)、2013年11月27号(第十三周周三)和2014年1月1号(第十八周周三)晚上19:00-22:00.

2.实验要求独立完成,发现抄袭则实验为0分(包括网上的代码),没有分组。

3.要求提交实验源码,可执行程序以及实验报告。实验报告包括程序的输入,输出,结果,演示界面,算法语言描述,原理等。要求把所有实验打包成一个rar文件后提交到软件学院教学辅助系统,并且命名文件格式为学号+姓名(eg. 学号_NAME),不符合命名格式的一律不批改。

4.程序语言不做特别要求,C、C++、JAVA均可

5.实验提交截止时间:2014/ 01/ 12 23:59:00 之前

二、题目

题目主要包括两部分:练手题(2道)和正式题目(2道)。对于练手题目,均来自ACM程序设计比赛中的常见预热题目,在实验报告中请给出详细的解题思路,并给出两个输入数据样例对应的数据输出。对于正式题目,实验报告请根据每个题目后面红色字体给出的提示完成,请重视代码编写完成以后的性能分析部分。

<一> 练手题

1.整数划分类

输入:

每组输入是两个整数n和k。(1 <= n <= 50, 1 <= k <= n)

输出:

对于每组输入,请输出六行。

第一行:将n划分成若干正整数之和的划分数。

第二行:将n划分成k个正整数之和的划分数。

第三行:将n划分成最大数不超过k的划分数。

第四行:将n划分成若干奇正整数之和的划分数。

第五行:将n划分成若干不同整数之和的划分数。

第六行:打印一个空行。

Sample Input

5 2

Sample Output

7

2

3

3

2.幻方矩阵

幻方是一种很有意思的数字矩阵,在很早著名的九宫八卦阵就与幻方有关。

幻方的定义为:

1 到N*N 的整数填入N*N的方格中,每行和每列以及对角线的数字之和必须是相等的。你作为八卦公司的顶级程序员,现在需要你解决一个问题,将任意奇数阶的幻方找出来。

输入:

输入包括多个测试集,每行为一个正奇数N(1 <= N < 1000),0作为输入的结束且不需要处理。

输出:

对于输入的每一个N,输出一个它所对应的N阶幻方,如果存在多个,任意一个即可。

每个幻方为N*N的矩阵,

对于每个幻方,每行输出幻方的一行,每行中的数字之间用一个或多个空格分开。不同的幻方之间用一个空行分开。

Sample Input

1

3

Sample Output

1

4 9 2

3 5 7

8 1 6

<二> 正式题目

1.(必做题)常见排序算法的实现与性能比较

问题描述:实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法

实验要求:

A.在随机产生的空间大小分别N = 10,1000,10000,100000

的排序样本上测试以上算法。

B.结果输出:

(1)N=10时,排序结果。

(2)N=1000,10000,100000时,每个排序用不同的样本多试验几次(最

低5次)得出平均时间,比较不同排序算法所用的平均时间。

实验报告要点:总结对各种排序的性能分析。

2. 必选题)最长递增子序列

问题描述:随机生成小于等于n的自然数的一个序列,输出其最长递增子序列(任意一个即可)。

n 分别取1000,3000,10000。

例:n=5 随机序列为5 1 4 2 3,正确输出为1 2 3,即长度为3的递增子序列。

提示:参考LCS,思考能否达到时间复杂度(O(nlogn))

实验报告要点:描述动态规划思想,总结时间和空间复杂度。