《ACM算法与数据结构设计》大作业

《ACM算法与数据结构设计》大作业
《ACM算法与数据结构设计》大作业

《ACM算法与数据结构设计》课程大作业报告

题目:五位以内的对称素数

学生姓名

班级学号

学生学院计算机软件学院

学生专业计算机科学与技术

联系电话

电子邮

指导教师

指导单位计算机学院软件工程系

日期2011.5.24

注意事项

(1)课程大作业从《ACM算法与数据结构设计》课程实验二(2011年4月19日)或实验三(2011年5月10日)中任选一个课题完成。(2)课程大作业内容包括课题名称、课题内容和要求、课题分析、概要设计、详细设计、测试数据及其结果分析、调试过程中的问题、参考资料列表、课程小结等。

(3)课程报告可以打印,也可以手写,但前面两页内容、大作业撰写纲要、课程小结不可遗漏和更换。

(4)课程小结给出ACM程序设计过程的收获、遇到的问题,遇到问题解决问题过程的思考、程序调试能力的思考等,需要手写签字。(5)课程大作业提交时间为2011年5月24日(第14周星期二)晚19:00~20:00,地点:计算中心A机房。

一、课题名称:

五位以内的对称素数

二、课题内容和要求:

题目:判断一个数是否为对称且不大于五位数的素数。

要求:判断输入的一组数据(正整数)是否是五位以内的对称素数,逐个判断并输出“yes”或“no”

三、课题分析:

定义两个函数分别判断数据是否为素数(bool isprime(int n)),是否是对称数(bool issym(int n));在main()函数中利用if()语句来判断该数据是否是五位以内的数。只有同时满足三个条件,才能判断一个数据是五位以内的对称素数,输出“yes”;否则输出“no”。

输入输出方案:

输入:

输入数据含有不多于50个的正整数(0

输出:

对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。

四、概要设计:流程图:

五、详细设计:

源代码如下:

#include

using namespace std;

bool isprime(int n) //判断某数据是否是素数{

if (1==n)return 0;

for(int i=2;i*i<=n;i++)

if(n%i==0)

return 0;

return 1;

}

bool issym(int n) //判断某数据是否是对称数{

if(n<10)return 1;

if(n>=10 && n<100)

if(n/10==n%10)return 1;

if(n>=100 && n<1000)

if(n%10==n/100)return 1;

if(n>=10000 && n<100000)

if(n/1000==(n%10)*10+(n%100)/10)return 1;

return 0;

}

int main()

{

int n; while(cin>>n) {

if(n<100000 && isprime(n) && issym(n)) //三个条件判断某

数据是五位以内的对称素数

cout<<"Y es"<

else

cout<<"No"<

} return 0; }

六、测试数据及其结果分析:

七、调试过程中的问题

判断一个数据是否为对称数是采用数据分段的方式进行判断;

八、参考资料: C++教科书

输出样例: yes yes no

输入样例: 11 101 272

南京邮电大学《ACM算法与数据结构设计》

课程小结

学生姓名

班级学号

学生学院计算机软件学院

学生专业计算机科学与技术

电子邮件

指导教师

学期2010-2011-2

算法设计与分析(作业三)

算法设计与分析实验报告 学院信息科学与技术学院 专业班级软件工程3班 学号 20122668 姓名王建君 指导教师尹治本 2014年10月

实验四 矩阵相乘次序 一、问题提出 用动态规划算法解矩阵连乘问题。给定n 个矩阵{A 1,A 2,…,A n },其中A i 与A i+1是可乘的,i=1,2,…,n-1。要算出这n 个矩阵的连乘积A 1A 2…A n 。由于矩阵乘法满足结合律,故计算矩阵的连乘积可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。完全加括号的矩阵连乘积可递归地定义为: (1)单个矩阵是完全加括号的; (2)矩阵连乘积A 是完全加括号的,则A 可表示为2个完全加括号的矩阵连乘积B 和C 的乘积并加括号,即A=(BC)。 例如,矩阵连乘积A 1A 2A 3A 4有5种不同的完全加括号的方式:(A 1(A 2(A 3A 4))),(A 1((A 2A 3)A 4)),((A 1A 2)(A 3A 4)),((A 1(A 2A 3))A 4),(((A 1A 2)A 3)A 4)。每一种完全加括号的方式对应于一个矩阵连乘积的计算次序,这决定着作乘积所需要的计算量。若A 是一个p ×q 矩阵,B 是一个q ×r 矩阵,则计算其乘积C=AB 的标准算法中,需要进行pqr 次数乘。 (3)为了说明在计算矩阵连乘积时,加括号方式对整个计算量的影响,先考察3个矩阵{A 1,A 2,A 3}连乘的情况。设这三个矩阵的维数分别为10×100,100×5,5×50。加括号的方式只有两种:((A 1A 2)A 3),(A 1(A 2A 3)),第一种方式需要的数乘次数为10×100×5+10×5×50=7500,第二种方式需要的数乘次数为100×5×50+10×100×50=75000。第二种加括号方式的计算量时第一种方式计算量的10倍。由此可见,在计算矩阵连乘积时,加括号方式,即计算次序对计算量有很大的影响。于是,自然提出矩阵连乘积的最优计算次序问题,即对于给定的相继n 个矩阵{A 1,A 2,…,A n }(其中矩阵Ai 的维数为p i-1×p i ,i =1,2,…,n ),如何确定计算矩阵连乘积A 1A 2…A n 的计算次序(完全加括号方式),使得依此次序计算矩阵连乘积需要的数乘次数最少。 二、求解思路 本实验采用动态规划算法解矩阵连乘积的最优计算次序问题。本实验的算法思路是: 1)计算最优值算法MatrixChain():建立两张表(即程序中的**m 和**s ,利用二维指针存放),一张表存储矩阵相乘的最小运算量,主对角线上的值为0,依次求2个矩阵、3个矩阵…、直到n 个矩阵相乘的最小运算量,其中每次矩阵相乘的最小运算量都在上一次矩阵相乘的最小运算量的基础上求得,最后一次求得的值即为n 个矩阵相乘的最小运算量;另一张表存储最优断开位置。 2)输出矩阵结合方式算法Traceback():矩阵结合即是给矩阵加括号,打印出矩阵结合方式,由递归过程Traceback()完成。分三种情况: (1)只有一个矩阵,则只需打印出A1; (2)有两个矩阵,则需打印出(A1A2); (3)对于矩阵数目大于2,则应该调用递归过程Traceback()两次,构造出最优加括号方式。 三、算法复杂度 该算法时间复杂度最高为)(n 3 O 。 四、实验源代码

吉林大学 2019-2020学年第一学期期末考试《计算机辅助设计》大作业答案

吉林大学网络教育学院 2019-2020学年第一学期期末考试《计算机辅助设计》大作业答案 学生姓名专业 层次年级学号 学习中心成绩 年月日

作业完成要求:大作业要求学生手写,提供手写文档的清晰扫描图片,并将图片添加到word 文档内,最终wod文档上传平台,不允许学生提交其他格式文件(如JPG,RAR等非word 文档格式),如有雷同、抄袭成绩按不及格处理。 一、问答题(每小题7分,共70分) 1、如何按项目规划图纸?它和按文件夹形式存放图纸的区别是什么? 2、AutoCAD 的命令输入的方式有几种? 3、如何将图纸标题和图纸编号设置为字段?如何更新图纸的图纸标题和图纸编号字段? 3、如何创建和更新图纸一览表和指定一览表的格式? 4、AutoCAD提供了哪12种尺寸标注类型? 5、简述块的主要作用。 7、绘图过程中常需要输入点的位置,AutoCAD提供了哪几种输入点的方式? 8、比较REDRAW命令与REGEN命令。 9、什么是PLINE(多义线)?比较PLINE线与LINE线。 10、图形的复制命令主要有哪些?各自的功能是什么? 二、制图题(30分) 根据图所示“组合体”两视图,按1:1的比例绘制其三视图,不注尺寸。( 30分 )

答案 作业完成要求:大作业要求学生手写,提供手写文档的清晰扫描图片,并将图片添加到word 文档内,最终wod文档上传平台,不允许学生提交其他格式文件(如JPG,RAR等非word 文档格式),如有雷同、抄袭成绩按不及格处理。 一、问答题(每小题7分,共70分) 1、如何按项目规划图纸?它和按文件夹形式存放图纸的区别是什么? 答:按照图纸编号、专业分门别类,如果存档,要按照规范copy要求折叠、装订成册,如果要施工,方便翻阅,就按侧边装订,平摊避光存放。 建筑工程图纸分为建筑施工图、结构施工图、设备施工图。它是审批建筑工程项目的依据;在生产施工中,它是备料和施工的依据。 当工程竣工时,要按照工程图的设计要求进行质量检查和验收,并以此评价工程质量优劣;建筑工程图还是编制工程概算、预算和决百算及审核工程造价的依据;建筑工程图是具有法律效力的技术文件。 2、AutoCAD 的命令输入的方式有几种? 答: 1)、从菜单栏中输入 2)、点击工具栏中的图标3)、从命令行中输入 4)、点击屏幕菜单中的命令 3、如何将图纸标题和图纸编号设置为字段?如何更新图纸的图纸标题和图纸编号字段? 答: 答:写入文字时对图纸标题和编号选择“插入字段”,选择“图纸集”字段类别,字段名称分别选择“当前图纸标题”和“当前图纸编号”,在图纸集管理器中对标题和编号进行修改后,选择下拉菜单“工具”——“更新字段”命令,可以更新标题栏中的字段。 4、如何创建和更新图纸一览表和指定一览表的格式? 答:写入文字时对图纸标题和编号选择“插入字段”,选择“图纸集”字段类别,字段名称分别选择“当前图纸标题”和“当前图纸编号”,在图纸集管理器中对标题和编号进行修改后,选择下拉菜单“工具”——“更新字段”命令,可以更新标题栏中的字段。

数据结构大作业含源代码

数据结构大作业 作业题目:职工信息管理系统 姓名: 学号: 班级: 指导教师: 日期:

一、主要功能: 这个职工信息管理系统是由C语言编写的程序,它用起来很方便又很灵活。它由输入职工信息,输出职工信息,按职工号,部门号,工资排序,按职工号,部门号,工资来输出职工的所有信息。删除有关职工的所有信息,保存职工的所有信息并退出等11个模块儿组成。 二、实验环境:C语言、C++、C# 等等。 三、功能说明: 下面按步骤来介绍一下,职工信息管理系统的基本操作。 这是运行程序以后出现的主界面。如图(1)所示: 图(1)主界面 1.输入职工的信息 该模块儿的功能是分别输入职工的姓名,职工号,部门号,工资等信息。每次输入职工的所有信息以后,界面上会显示出《输入完成!》的命令。如图(2)所示:

图(2)输入职工信息 2.输出所有的职工信息 该模块儿的功能是显示出有关职工的所有信息。操作如图(3)所示: 图(3)输出所有的职工信息 3.按职工号排序 该模块儿的功能是按职工号排序所有的职工。我们按3的时候,界面上会显示出《排序完成!》的命令。如图(4)所示:

图(4)按职工号排序 4.输出所有的职工号码 该模块儿的功能是显示出已排序好的所有职工的号码。操作如图(5)所示: 图(5)输出所有的职工号 5.按部门号排序 该模块儿的功能是按部门号排序所有职工的部门号。我们按5的时候,界面上会显示出《排序完成!》的命令。如图(6)所示:

图(6)按部门号排序 6.输出所有的部门号 该模块儿的功能是显示出已排序好的所有部门号。操作如图(7)所示: 图(7)输出所有的部门号 7.按职工的工资排序 该模块儿的功能是按工资排序所有职工的工资。我们按7的时候,界面上会显示出《排序完成!》的命令。如图(8)所示:

数据结构大作业

浙江大学城市学院实验报告 课程名称数据结构基础 实验项目名称实验九栈的应用 学生姓名丁汀专业班级信管1006 学号31001444 实验成绩指导老师(签名)日期 一.实验目的和要求 1、学会通过对问题的分析,设计一种合理的数据结构,并进行定义及操作的实现。 2、掌握利用栈各种操作来进行具体的实际应用。 3、加强综合程序的分析、设计能力。 二.实验内容 1、共享栈的设置,问题描述如下: 在一个数组空间stack[MaxSize]中可以同时存放两个顺序栈,栈底分别处在数组的两端,当第1个栈的栈顶指针top1等于-1时则栈1为空,当第2个栈的栈顶指针top2等于MaxSize时则栈2为空。两个栈均向中间增长,当有元素向栈1进栈时,使top1增1得到新的栈顶位置,当有元素向栈2进栈时,使top2减1得到新的栈顶位置。当top1==top2-1或top1+1==top2时,存储空间用完,无法再向任一栈做进栈操作,此时可考虑给出错误信息并停止运行。 要求: ⑴给出共享栈的顺序存储类型定义。 ⑵给出共享栈的抽象数据类型定义。 ⑶建立头文件test9_stack.h,包含共享栈的基本操作实现函数;建立主程序文件test9.cpp,在主函数中对共享栈的各个操作进行测试。 2、利用上述共享栈,实现火车车厢的调度模拟 设火车车厢分为三类:硬座、硬卧、软卧,分别用A、B、C表示。下图描述车厢调度的示意图,图中右端为排列无序的车厢,左端为调度后的车厢排列,使得所有软卧车厢在最前面、所有硬卧车厢在中间、所有硬座车厢在最后。 编程模拟上述车厢调度过程。 提示:两个辅助铁轨相当于两个栈,右端车厢进入用相应字符串给出,如“BBACBCAABBCAA”,左端车厢的用新生成的字符串给出。在test9_stack.h 给出模拟函数,并在主函数中进行调用测试。

算法分析与设计作业及参考答案样本

《算法分析与设计》作业( 一) 本课程作业由两部分组成。第一部分为”客观题部分”, 由 15个选择题组成, 每题1分, 共15分。第二部分为”主观题部分”, 由简答题和论述题组成, 共15分。作业总分30分, 将作为平时成 绩记入课程总成绩。 客观题部分: 一、选择题( 每题1分, 共15题) 1、递归算法: ( C ) A、直接调用自身 B、间接调用自身 C、直接或间接 调用自身 D、不调用自身 2、分治法的基本思想是将一个规模为n的问题分解为k个规模 较小的字问题, 这些子问题: ( D ) A、相互独立 B、与原问题相同 C、相互依赖 D、相互独立且与原问题相同 3、备忘录方法的递归方式是: ( C ) A、自顶向下 B、自底向上 C、和动态规划算法相同 D、非递归的 4、回溯法的求解目标是找出解空间中满足约束条件的: ( A )

A、所有解 B、一些解 C、极大解 D、极小解 5、贪心算法和动态规划算法共有特点是: ( A ) A、最优子结构 B、重叠子问题 C、贪心选择 D、 形函数 6、哈夫曼编码是: ( B) A、定长编码 B、变长编码 C、随机编码 D、定 长或变长编码 7、多机调度的贪心策略是: ( A) A、最长处理时间作业优先 B、最短处理时间作业优 先 C、随机调度 D、最优调度 8、程序能够不满足如下性质: ( D ) A、零个或多个外部输入 B、至少一个输出 C、指令的确定性 D、指令的有限性 9、用分治法设计出的程序一般是: ( A ) A、递归算法 B、动态规划算法

C、贪心算法 D、回溯法 10、采用动态规划算法分解得到的子问题: ( C ) A、相互独立 B、与原问题相同 C、相互依赖 D、相互独立且与原问题相同 11、回溯法搜索解空间的方法是: ( A ) A、深度优先 B、广度优先 C、最小耗费优先 D、随机搜索 12、拉斯维加斯算法的一个显著特征是它所做的随机选性决策 有可能导致算法: ( C ) A、所需时间变化 B、一定找到解 C、找不到所需的解 D、性能变差 13、贪心算法能得到: ( C ) A、全局最优解 B、 0-1背包问题的解 C、背包问题的 解 D、无解 14、能求解单源最短路径问题的算法是: ( A ) A、分支限界法 B、动态规划 C、线形规划 D、蒙特卡罗算法 15、快速排序算法和线性时间选择算法的随机化版本是:

《现代设计方法2》大作业

专业限选课大作业 课程名称: 现代设计方法姓名: 李宝东 班级: 10机自本2 学号: 1010111056 2013年10月24日 铜陵学院机械工程学院 机械产品的设计方法

摘要:学技术的飞速发展,产品功能要求的日益增多,复杂性增加,寿命期缩短,更新换代速度加快。根据目前国内外设计学者进行机械产品设计时的主要思维特点,将产品进行不同的方案设计、可靠性设计等各种设计。 关键词:机械产品方案设计方法可靠性设计计算机辅助软件 机械产品的设计方法 Abstract: the rapid development of science technology, the product functional requirements increasingly, complexity increases, life period shorten, update speed. According to the current design of scholars at home and abroad were reviewed and the main thinking characteristics of mechanical product design, the product with different design, reliability design and other design. Keywords: mechanical product scheme design method of reliability design cad software 科学技术的飞速发展,产品功能要求的日益增多,复杂性增加,寿命期缩短,更新换代速度加快,出现了一批新的设计学科和一系列新的设计理论与设计方法,诸如优化设计、可靠性设计、计算机辅助设计等。 现代设计是以产品为总目标的一系列种类繁多的现代设计法和技术的综合运用。生产技术的需要和先进设计手段的出现,必须促进设计领域的改革和发展,对于机械设计来说几乎是更新换代,传统的常规设计方法受到很大冲击,用科学的设计方法代替经验的、类比的设计方法已势在必行。缩短设计周期、提高设计质量、发展设计理论、改进设计技术及方法已成为当前机械设计的必然趋势。 机械产品的方案设计方法 1、结构模块化设计方法从规划产品的角度提出:定义设计任务时以功能化的产品结构为基础,引用已有的产品解(如通用零件部件等)描述设计任务,即分解任务时就考虑每个分任务是否存在对应的产品解,这样,能够在产品规划阶段就消除设计任务中可能存在的矛盾,早期预测生产能力、费用,以及开发设计过程中计划的可调整性,由此提高设计效率和设计的可靠性,同时也降低新产品的成本。

数据结构大作业报告

数据结构大作业报告 数据结构大作业实验报告课程名称:数据结构设计题目:客户去银行储蓄模拟程序一( 实验题目 (1)内容描述:编写一个程序反映客户到银行储蓄的过程。 (2)基本要求:要实现以下功能:1:排队 2:储蓄 3:查看排队4.:删除自己所排的队 5.不再排队,剩下的客户依次储蓄 6:下班 二( 实验的工程组成图和程序结构图 main bank 本工程的组成结构如左图所示,程序结构图如右图所示。三( 工程所包含的函数的功能描述 Bank():模拟客户到银行去储蓄的过程。客户排队储蓄,所以要用到一个队列, 这里设计了一个不带头结点的单链表作为队列。 四( 实验工程的算法描述及流程图 //客户排队去银行储蓄,用到了队列的知识,这里设计了一个不带头结点的单链表作为队列来完成排队储蓄过程 #include

#include typedef struct qnode { int data; struct qnode *next; } QNode; //定义链队结点类型 typedef struct { QNode *front,*rear; } QType; //定义链队类型 void bank() //模拟客户储蓄的过程 { int cho,onwork=1,no,find; QType *q; //定义链队类型的指针 QNode *p,*r; //定义链队结点的指针 q=(QType *)malloc(sizeof(QType)); //申请链队的空间 q->front=q->rear=NULL; //创建空队 while (onwork==1) //循环执行 { printf("1:排队 2:储蓄 3:查看排队4:删除自己所排的队 5:不再排队,剩下的客户依次储蓄 6:下班请选择:"); scanf("%d",&cho); switch(cho) { case 1://排队

最新算法分析与设计作业(一)及参考答案讲课讲稿

《算法分析与设计》作业(一) 本课程作业由两部分组成。第一部分为“客观题部分”,由15个选择题组成,每题1分,共15分。第二部分为“主观题部分”,由简答题和论述题组成,共15分。作业总分30分,将作为平时成绩记入课程总成绩。 客观题部分: 一、选择题(每题1分,共15题) 1、递归算法:(C ) A、直接调用自身 B、间接调用自身 C、直接或间接调用自身 D、不调用自身 2、分治法的基本思想是将一个规模为n的问题分解为k个规模较小的字问题,这些子问题:(D ) A、相互独立 B、与原问题相同 C、相互依赖 D、相互独立且与原问题相同 3、备忘录方法的递归方式是:(C ) A、自顶向下 B、自底向上 C、和动态规划算法相同 D、非递归的 4、回溯法的求解目标是找出解空间中满足约束条件的:(A ) A、所有解 B、一些解 C、极大解 D、极小解 5、贪心算法和动态规划算法共有特点是:( A ) A、最优子结构 B、重叠子问题 C、贪心选择 D、形函数 6、哈夫曼编码是:(B) A、定长编码 B、变长编码 C、随机编码 D、定长或变长编码 7、多机调度的贪心策略是:(A) A、最长处理时间作业优先 B、最短处理时间作业优先 C、随机调度 D、最优调度 8、程序可以不满足如下性质:(D ) A、零个或多个外部输入 B、至少一个输出 C、指令的确定性 D、指令的有限性 9、用分治法设计出的程序一般是:(A ) A、递归算法 B、动态规划算法

C、贪心算法 D、回溯法 10、采用动态规划算法分解得到的子问题:( C ) A、相互独立 B、与原问题相同 C、相互依赖 D、相互独立且与原问题相同 11、回溯法搜索解空间的方法是:(A ) A、深度优先 B、广度优先 C、最小耗费优先 D、随机搜索 12、拉斯维加斯算法的一个显著特征是它所做的随机选性决策有可能导致算法:( C ) A、所需时间变化 B、一定找到解 C、找不到所需的解 D、性能变差 13、贪心算法能得到:(C ) A、全局最优解 B、0-1背包问题的解 C、背包问题的解 D、无解 14、能求解单源最短路径问题的算法是:(A ) A、分支限界法 B、动态规划 C、线形规划 D、蒙特卡罗算法 15、快速排序算法和线性时间选择算法的随机化版本是:( A ) A、舍伍德算法 B、蒙特卡罗算法 C、拉斯维加斯算法 D、数值随机化算法 主观题部分: 二、写出下列程序的答案(每题2.5分,共2题) 1、请写出批处理作业调度的回溯算法。 #include #include using namespace std; class Flowing { friend int Flow(int ** ,int ,int []); private: //int Bound(int i); void Backtrack(int t); int **M;// int *x;//当前解

计算机辅助设计大作业教材

2015—2016 学年第二学期研究生课程考核 (读书报告、研究报告) 考核科目:计算机辅助设计与制造 学生所在院(系):机电工程学院 学生所在学科:机械工程 姓名:张娜娜 学号:1502210093 题目:应用三维建模软件构建一个零件模型,描述建模过程。针对该零件的具体情况(比如相关模型的表示方法、数据结构、显示操作情况等),就涉及到的所学知识进行论述。

问题 1. 应用三维建模软件构建一个零件模型,描述建模过程。针对该零件的具体情况(比如相关模型的表示方法、数据结构、显示操作情况等),就涉及到的所学知识进行论述。 2. 计算机是如何帮助我们完成设计任务的?你了解哪些CAD系统?结合你应用过的软件加以论述。

问题1: 应用Pro/E对平口虎钳的固定钳身进行三维建模。 1. 启动Pro/E,新建文件,选择零件设计。 2. 选择俯视基准面,绘制如图1-1所示的截面。 ●知识点:由于矩形已经形成了特征,所以经过确定矩形的两个对角点即可确定矩形,完成后修改对应的长宽即可完成草图的绘制。 四叉树。二维图形是以四叉树的形式存储数据的。它的基本思想是将平面划分为四个子平面,这些子平面任可以继续划分,通过定义这些平面的“有图形”和“无图形”来描述不同形状的物体。 图1-1 草绘截面图1-2 拉伸的实体 3. 退出草图绘制,单击拉伸命令,其参数的设置如图1-2所示。单击对勾,完成的拉伸实体如图1-2所示。 ●知识点:八叉树。拉伸厚度是以八叉树的形式存储数据的。八叉树用以描述三维物体,它设想将空间通过三坐标平面XY、XZ、ZX划分为八个子空间。八叉树中的每一个节点对应着每一个子空间。 图1-3 拉伸草图图1-4 拉伸实体

数据结构大作业要求

数据结构实验讲义 一实验步骤 随之计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。然而,编制一个10,000行的程序的难度绝不仅仅是一个5,000行的程序两倍,因此软件开发需要系统的方法。一种常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实习题的复杂度远不如(从实际问题中提出来的)一个“真正的,,软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,我们制订了如下所述完成实习的五个步骤:’ (一)问题分析和任务定义 通常,实习题目的陈述比较简洁,或者说是有模棱两可的含义。因此,在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。注意:本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么?是否接受非法的输入?对非法输入的回答方式是什么等。这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据。 (二)数据类型和系统设计 在设计这一步骤中需分逻辑设计和详细设计两步实现。逻辑设计指的是,对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型;详细设计则为定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。作为逻辑设计的结果,应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的规格说明),各个主要模块的算法,并画出模块之间的调用关系图。详细设计的结果是对数据结构和基本操作的规格说明作出进一步的求精,写出数据存储结构的类型定义,按照算法书写规范用类c语言写出函数形式的算法框架。在求精的过程中,应尽量避免陷入语言细节,不必过早表述辅助数据结构和局部变量。 (三)编码实现和静态检查 编码是把详细设计的结果进一步求精为程序设计语言程序。程序的每行不要超过60个字符。每个函数体,即不计首部和规格说明部分,一般不要超过40行,最长不得超过60行,否则应该分割成较小的函数。要控制if语句连续嵌套的深度。其他要求参见第一篇的

大数据结构大作业报告材料

数据结构课程设计课题名称 专业名称 学生姓名 学号+电话 指导教师

评分细则

目录 评分细则----------------------------------------------------------------------------------------------------------------- 2 一、课题描述 ---------------------------------------------------------------------------------------------------------- 4 二、需求分析 ---------------------------------------------------------------------------------------------------------- 4 2.1 ------------------------------------------------------------------------------------------------------------------ 4 2.2- ------------------------------------------------------------------------------------------------------------------4 2.3--------------------------------------------------------------------------------------------------------------------4 三、概要设计 ---------------------------------------------------------------------------------------------------------- 4 3.1 结构分析 ----------------------------------------------------------------------------------------------------------- 4 3.2函数------------------------------------------------------------------------------------------------------------ 4 3.2.1 malloc() --------------------------------------------------------------------------------------------- 4 3.2.2getchar() ----------------------------------------------------------------------------------------------------- 5 3.2.3 list_create() ------------------------------------------------------------------------------------------------ 5 3.2.4 list_disp() --------------------------------------------------------------------------------------------------- 5 3.2.5 list_sort() --------------------------------------------------------------------------------------------------- 5 四、详细设计 ---------------------------------------------------------------------------------------------------------- 5 4.1课题分析 ----------------------------------------------------------------------------------------------------- 5 4.1.1选择 ------------------------------------------------------------------------------------------------- 5 4.1.2冒泡 --------------------------------------------------------------------------------------------------------- 5 4.1.3 堆------------------------------------------------------------------------------------------------------------ 6 4.1.4 快速--------------------------------------------------------------------------------------------------------- 6 4.1.5 基数--------------------------------------------------------------------------------------------------6 4.1.6 希尔--------------------------------------------------------------------------------------------------------- 6 4.1.7 归并--------------------------------------------------------------------------------------------------6 4.2课题实现 ----------------------------------------------------------------------------------------------------- 7 五、测试数据及结果------------------------------------------------------------------------------------------------- 9 六、调试分析及总结----------------------------------------------------------------------------------------------- 10

《算法分析与设计》作业参考答案

《算法分析与设计》作业参考答案 作业一 一、名词解释: 1.递归算法:直接或间接地调用自身的算法称为递归算法。 2.程序:程序是算法用某种程序设计语言的具体实现。 二、简答题: 1.算法需要满足哪些性质?简述之。 答:算法是若干指令的有穷序列,满足性质: (1)输入:有零个或多个外部量作为算法的输入。(2)输出:算法产生至少一个量作为输出。 (3)确定性:组成算法的每条指令清晰、无歧义。 (4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。 2.简要分析分治法能解决的问题具有的特征。 答:分析分治法能解决的问题主要具有如下特征: (1)该问题的规模缩小到一定的程度就可以容易地解决; (2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质; (3)利用该问题分解出的子问题的解可以合并为该问题的解; (4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 3.简要分析在递归算法中消除递归调用,将递归算法转化为非递归算法的方法。 答:将递归算法转化为非递归算法的方法主要有: (1)采用一个用户定义的栈来模拟系统的递归调用工作栈。该方法通用性强,但本质上还是递归, 只不过人工做了本来由编译器做的事情,优化效果不明显。(2)用递推来实现递归函数。 (3)通过Cooper 变换、反演变换能将一些递归转化为尾递归,从而迭代求出结果。 后两种方法在时空复杂度上均有较大改善,但其适用范围有限。 三、算法编写及算法应用分析题: 1.冒泡排序算法的基本运算如下: for i ←1 to n-1 do for j ←1 to n-i do if a[j]

电路大作业 计算机辅助设计

上海电力学院 本科课程设计 电路计算机辅助设计 (1) 院系:电气工程学院 专业年级(班级): 2012021 学生姓名:邓学号: 指导教师:向国芬 成绩:

仿真实验一:电阻电路辅助分析(回路电流法)一.实验目的 1.学习以及熟练电路仿真软件的使用; 2.学会运用回路电流法分析电路; 3.掌握功率的测量与计算方法; 4.学会用仿真软件来验证定理的可行性。 二.实验原理 例题:用回路电流法求解下图(1)所示电路中的电压u,。 4Ω 图(1) 4Ω 图(2)

理论分析: 1. 电路中有一个无伴电流源支路 2. 电路中有一个受控电流源,且可先将其看作独立电流源处理; 3. 电路中有3个网孔,数量较少 综上,此题用回路电流法,选取回路电流2l I 通过该无伴电流源,另选取两条回路电流1l I 和3l I ,如图(2)所示。 列出回路电流方程: 3l I 1l I 2l I 1l I 2l I 2l I 3 l I 解得 1l I 3 l I 1l I (3l I 1l I ) =9.92W (发出功率) 三. 仿真实验设计与测试 设计下图所示的仿真电路:

测量仿真电路中的电流电压和功率,看是否与计算值相同: 观察仿真电路数据,可见仿真得1l I =0.8A,3l I =3.6A,u=8V,P=9.92W 与理论值相符。 四.实验结论与回路电流法使用时的注意事项 回路电流法是以回路电流作为未知量,根据KVL 列出必要的回路电压方程,联立求解回路电流。本实验证明了回路电流法的正确性。 在运用回路电流法时需注意: 1. 回路电流法适用于回路数较少的电路; 2. 受控电流源可看成独立源列方程; 3. 当电路中含有无伴电流源时,让其自身构成一个独立回路; 4. 方程的数目要与未知数相同。 特别的在判断发出还是吸收功率是要把计算值和参考方向是否关联同时考虑进去。本题中计算值为正,但是看电路图可知电流与电压为非关联方向,因此得出结论为发出功率。

家谱管理系统 -数据结构大作业

/* 家谱管理系统 任务:实现具有下列功能的家谱管理系统 功能要求: 1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容: 姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。 2). 实现数据的存盘和读盘。 3). 以图形方式显示家谱。 4). 显示第n 代所有人的信息。 5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 按照出生日期查询成员名单。 7). 输入两人姓名,确定其关系。 8). 某成员添加孩子。 9). 删除某成员(若其还有后代,则一并删除)。 10).修改某成员信息。 11).按出生日期对家谱中所有人排序。 12).打开一家谱时,提示当天生日的健在成员。 要求:建立至少30个成员的数据,以较为直观的方式显示结果,并提供文稿形式以便检查。界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。存储结构:学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。测试数据:要求使用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。 测试数据及测试结果请在上交的资料中写明; */ #include #include #include #include #include"map.h" #define MAXN 100 #define MAXMEM 100 #define Elemtype char ============================== //树 typedef struct BiTNode { int mark;//标记 int level; char name[50];//姓名 char birthday[50];//生日

计算机辅助设计大作业DOC

2015-16学年二学期研究生课程考核 (读书报告、研究报告) 考核科目:计算机辅助设计与制造 学生所在院(系):机电工程学院 学生所在学科:机械制造及其自动化 姓名:王永明 学号:1502210051 题目:应用三维建模软件构建一个零件模型,描述建模过程。请结合该模型涉及到的课程学习知识(如模型表示方法、数据结构、显示等),针对该零件的具体情况进行论述。对所论述技术的发展趋势做出讨论。

题目: 1.应用三维建模软件构建一个零件模型,描述建模过程。请结合该模型涉及到 的课程学习知识(如模型表示方法、数据结构、显示等),针对该零件的具体情况进行论述。对所论述技术的发展趋势做出讨论。 2.为什么要使用数据库?数据库的基本原理是什么?尝试用office的组件Access数据库建立一个数据库,结合你的设计过程论述数据库的设计过程。

在UG中建立一个三维模型如下图所示 效果预览: 建模步骤: 第一步、绘制正八边形,内接圆半径为50,如下图所示。 第二步、建立一条起点在原点,长度为30,沿着Z轴的直线,见下图。

第三步、以八边形的两个端点及上步建立直线的顶点为中点建立下图圆弧。 第四步、对圆弧进行修剪,留下四分之一圆弧,见下图。 第五步、运用变换旋转-45°建立同样的圆弧,如下图所示。

第六步、运用曲线组命令建立伞布的曲面,如下图所示。 第七步、将WCS原点移到下图位置,并绘制半径为80的小圆弧。 第八步、以上步建立的曲线为截面进行对称拉伸,拉伸距离为3,见下图。

第九步、运用修剪体命令对伞布进行修剪,效果如下图所示。 第十步、对伞布曲面进行加厚处理,如下图所示。 第十一步、对伞布的边圆弧曲线进行偏置,距离为0.1,见下图。

数据结构大作业-纸牌游戏

数据结构课程设计大作业 题目纸牌游戏 专业计算机科学与技术 学生姓名 __________________ 学号 _____________________ 指导教师 __________________ 完成日期 __________________ 信息与工程学院

目录 一、实验内容概述(设计任务与技术要求) (1) 二、实验目的概述(总体设计方案) (1) 三、解题思路的描述(数据结构和算法的设计): (1) 四、源程序清单(源程序中应该附有必要的注释) (2) 五、程序调试及测试结果 (4) 六、结论 (4) 七、参考文献 (5)

【内容摘要】 编号为1~52的牌,正面向上,从第二张开始,以2为基数,是2的倍数的牌翻一次,直到最 后一张牌;然后,从第三张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从 第四张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;依次类推,知道所有以52 为基数的牌翻过一次。输出:这时正面向上的牌有哪些? 【关键字】 52张纸牌,倍数,基数,数组 【Abstract 】 Numbered 1 to 52 cards, face up, starting from the second to 2 as the base, is a multiple of 2 cards turning on ce, un til the last card; and the n, begi nning from the third to 3 as the base,is a multiple of 3 cards turning once, un til the last card; and the n start from the fourth to 4 as the base, is a multiple of 4 cards turning once, un til the last card; and so on, that was all of 52base of the card turned over on ce.Output: At this time what the cards face up? 【Key words 】 52 cards, multiple, base, array

算法分析与设计(线下作业二)

《算法分析与设计》 学习中心: 专业: 学号: 姓名:

作业练习二 一、名词解释 1、MST性质 2、子问题的重叠性质 递归算法求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次,这种性质称为子问题的重叠性质。 二、简答题 1、简述动态规划算法求解的基本要素。 答:动态规划算法求解的基本要素包括: 1)最优子结构是问题能用动态规划算法求解的前提; 2)动态规划算法,对每一个子问题只解一次,而后将其解保存在一个表格中,当再次需要解此子问题时,只是简单地用常数时间查看一下结果,即重叠子问题。 2、备忘录方法和动态规划算法相比有何异同简述之。 答:备忘录方法是动态规划算法的变形。与动态规划算法一样,备忘录方法用表格保存已解决的子问题的答案,在下次需要解此问题时,只要简单地查看该子问题的解答,而不必重新计算。备忘录方法与动态规划算法不同的是,备忘录方法的递归方式是自顶向下的,而动态规划算法则是自底向上递归的。因此,备忘录方法的控制结构与直接递归方法的控制结构相同,区别在于备忘录方法为每个解过的子问题建立了备忘录以备需要时查看,避免了相同的子问题的重复求解,而直接递归方法没有此功能。

3、贪心算法求解的问题主要具有哪些性质简述之。 答:贪心算法求解的问题一般具有二个重要的性质: 一是贪心选择性质,这是贪心算法可行的第一个基本要素; 另一个是最优子结构性质,问题的最优子结构性质是该问题可用贪心算法求解的关键特征。 三、算法编写及算法应用分析题 1、设计求解如下最大子段和问题的动态规划算法。只需给出其递推计算公式即可。 最大子段和问题:给定由n 个整数(可能为负整数)组成的序列a1a2 … an,求该序列形如Σi≤k≤j ak的子段和的最大值。当所有整数均为负整数时定义其最大子段和为0。依次定义,所求的最优值为max{0, max1≤i≤j≤n Σi≤k≤j ak }。

相关文档
最新文档