- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
計算机软件应用结课作业
《软件技术基础》结课大作业
姓名: 院振召
学号: 120611335
日期: 2014年6月20日
2014软件技术基础期末作业
说明与要求:
开放式考试不仅考察知识,同时考察学生查阅文献的能力;学生可以使用Google、百度等搜索引擎,图书馆数字资源,如同方CNKI(中国学术期刊全文数据库)查阅资料,寻找答案和解题思路;
可以使用各种工具帮助自己解题,可以相互讨论,但是不允许拷贝、复制、剽窃他人结果。如果发现雷同,按雷同人数,每次雷同从成绩中扣除10分。因不存在完美雷同标准,因此将根据批改教师的个人识别,进行雷同确认,因此为避免雷同,请自己设计代码或解题;
每个编程问题都要首先说明思路,然后给出代码;程序以及求解方法描述的编辑应该美观;程序代码应该有层次缩进,以便阅读;
每个编程问题的C/C++代码的每一行必须有清晰的注释,说明改行中变量和语句的作用,如果注释和C/C++语句不符,则视为剽窃。
根据自己的情况,采用C或C++语言中德一种作为编程语言,不能使用两种以上的语言;
编辑排版时,采用汉字五号宋体,英语和代码采用10号或五号Times New Roman字体,打印时采用双面打印,连同填写好的封面一起装订,在最后一堂课时上交;禁止使用更大号字;
2014软件技术基础期末作业
利用减半递推技术,写出求长度为n的数组中最大元素的递归算法(10分)。
编写用回溯法求解n皇后的算法(10分)。
给定n个城市间的距离,求从一个城市0出发经过其他城市一次且一次的一条最短路径(15分)。
将单链表看做二叉树,编写递归程序打印单链表(10分)。
编写二叉树的层次遍历算法(15分)。
自底向上实现归并排序算法(10分)。
实现堆排序算法(15分)。
实现迪杰斯特拉最短路径算法(15分)
1、利用减半递推技术,写出求长度为n的数组中最大元素的递归算法
解释说明:
解决实际问题的复杂程度往往与问题的规模有着密切的关系,因此,降低问题的规模是算法设计的关键,而减半递推技术是降低问题国模的一种有效方法。所谓的“减半”,是指将问题的规模减半,而问题的性质不变。所谓的“递推”是指重复“减半”的过程。
算法如下:
#includeiostreamusing namespace std;int max(int a[],int left,int right){ int mid=(left+right)1; int x,y; if(left==right-1)return a[left]; x=max(a,leftmid); y=max(a,mid,right); return xy?x:y;}void main(){ int n,i; int a[1000]; cinn; for(i=0;in;i++)cina[i]; coutmax(a,0,n)endl;}
编写用回溯法求解n皇后的算法
解释说明:
n个皇后在n元棋盘上的布局有n的n次方种,用回溯发求解问题。
假设定义一个长度为n的一维数组q,其中的每一个元素q[i](i=1,2,...,n)随时记录第n行上的皇后所在的序列号。
初始时,先将各皇后放在各行的第一列。即数组q的初值为|q[i]-q[j]|=|i-j|
而它们在同一列上的条件为q[i]=q[j]
算法如下:
#include iostream#include cmathusing namespace std;class NQueen{private:int numOfQueen;//the number of queensint numOfanswer;//the number of answersint *queen;public:NQueen();NQueen(int m);~NQueen();bool place(int k);void backtrack(int t);void showQueen();};NQueen::NQueen(){numOfQueen = 0;numOfanswer = 0;queen = new int [1];}NQueen::NQueen(int m){numOfQueen = m;numOfanswer = 0;queen = new int [m+1];for(int i=0;i=m;i++){queen[i]=0;}}NQueen::~NQueen(){delete
文档评论(0)