收藏 分享(赏)

四川大学算法设计.doc

上传人:j35w19 文档编号:7132650 上传时间:2019-05-06 格式:DOC 页数:18 大小:147.38KB
下载 相关 举报
四川大学算法设计.doc_第1页
第1页 / 共18页
四川大学算法设计.doc_第2页
第2页 / 共18页
四川大学算法设计.doc_第3页
第3页 / 共18页
四川大学算法设计.doc_第4页
第4页 / 共18页
四川大学算法设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、算法设计课程报告课序号: 学 号: 104304XXXX 姓 名: XXX 任课教师: 陈瑜 评阅成绩: 评阅意见: 提交报告时间:2012 年 6 月 4 日一、 动态规划1、 问题描述下图是个数字三角,请编写一个程序计算从顶部至底部某处一条路径,使得该路径所经过的数字总和最大。73 88 1 02 7 4 41 每一步可沿左斜线向下或右斜线向下走;2 1#include#includeusing namespace std;int num100100;int mid100100;int mm100100;int n;void slove()int i,j;memset(mid,0,size

2、of(mid);for(i=n-1;i=0;i-)for(j=0;jgetSumTree(M)getSumTree(j)(i#include#include#include#include#include#include#include#include#define in(x) scanf(“%d“,#define out(x) printf(“%dn“,x);using namespace std;const int N=1000001;int treesN;int n,m;inline bool cmp(const int inline long long getSum(int mid);

3、int main()int l,r;int mid;long long sum;while(scanf(“%d%d“,for(int i=0;i1;sum=getSum(mid);if(summid)sum+=treesi-mid;else break;return sum; 4. 测试数据5. 算法复杂度分析时间复杂度 O(n*logn)=n+(n-1);空间复杂度为 T(n)=(n);6. 和其他算法比较标准的二分,时间效率一般,还可以通过其他算法进行时间与优化,但思路简单,容易使用。三、 贪心算法1. 问题描述1.1 问题概述One day,Tpkey has nothing to do

4、 when he glances at some kids playing games on grid area.Saddenly he gets an idea , inventing a new maze game.First he draws a big grid area consisting of n*n small grid. The grid area has a compeletly center.The player will stand at the center,then he or she was given a hand of directional order,in

5、dicading that the player should jump to the neighbouring grid successively in this ordered direction.But some of this order is replaced by “?“,so that the player can jump at any direction.The winer will be the one who is the closest to the grid area boundary in the process of jumping.Then a kid is p

6、laying the game,but he stop,then he give a thought to guarantee he will be the winer.He feel so confused,but he know you are a good coder.He needs your help1.2 输入The first of input is an integer t (0 #include#include#include#include#define in(x) scanf(“%d“,#define out(x) printf(“%dn“,x);using namesp

7、ace std;const int N=1005;char strN;int main()int nn;int t;scanf(“%d“,for(int tt=0;ttnn)sum=nn;break;printf(“Case #%d :%dn“,tt+1,nn-sum);4. 测试数据5. 算法复杂度分析时间复杂度 o(n)的算法无法优化。空间复杂度为 T(n);可以进行优化达到 T(1)的算法。使用 getchar 来进行输入。6. 和其他算法比较很裸的一个贪心,算是最高效的算法,在空间上可以优化一些,做到无长数组的变量。四、 回溯法1. 问题描述在一个 N*N 的棋盘上放置 N 个皇后,且

8、使得每两个之间不能互相攻击,也就是使得每两个不在同一行,同一列和同一斜角线上。2. 算法分析对于 N1,问题的解很简单,而且我们很容易看出对于 N2 和 N3 来说,这个问题是无解的。所让我们考虑 4 皇后问题并用回溯法对它求解。因为每个皇后都必须分别占据行,我们需要做的不过是为棋盘上的每个皇后分配一列。我们从空棋盘开始,然后把皇后 1 放到它所在行的第一个可能位置上,也就是第一行第列。对于皇后 2,在经过第一列和第二列的失败尝试之后,我们把它放在第一个可能的位置,就是格子2,3),位于第二行第二列的格子。这被证明是一个死胡同,因为皇后:将没有位置可放。所以,该算法进行回溯,把皇后 2 放在下

9、一个可能位置(2,4)上。然后皇后 3 就可以放在(3,2),这被证明是另一个死胡同。该算法然后就回溯到底,把皇后 1移到(1,2)。接着皇后 2 到(2,4),皇后 3 到(3,1),而皇后 4 到(4,3),这就是该问题的一个解。通过以此类推的关系得出相应输入 N 的结果。3. 核心代码#include #include #include#includeusing namespace std;#define N 4int colN+1;/输出结果void Output()for(int i=1;in)Output();elsefor(int j=1;j=1 int ten10=1,10,1

10、00,1000,10000,100000,1000000,10000000,100000000,1000000000;int zt4=-1,-1,3,1,-1,0,4,2,-1,1,5,-1,0,-1,6,4,1,3,7,5,2,4,8,-1,3,-1,-1,7,4,6,-1,8,5,7,-1,-1; struct node;struct nodeint num;int a9;int zero;int ti;int pre;int h;void setPer(const node for(int i=0;iaj)ss+;return ss;void setA(int *b)for(int i=

11、0;isaveNum;mapendNum;node end,start;int BFS()saveNum.clear();endNum.clear();start.setNum();start.setPer(end);priority_queueque;node stnode(start);que.push(stnode);saveNumstnode.num=1;node mid,ans; while(!que.empty()ans=que.top();que.pop();for(int i=0;imid.tisaveNummid.num=mid.ti+1;else if(endNummid.

12、num!=0)if(mid.tiendNummid.num-1)endNummid.num=0;que.push(mid);saveNummid.num=mid.ti+1;endNumans.num=ans.ti+1;return -1;void Input() int i;for(i=0;i9;i+)scanf(“%d“,for(i=0;i9;i+)scanf(“%d“,int main()int t;scanf(“%d“,while(t-) Input();start.setNum();end.setNum();if(start.getBackNum()%2!=end.getBackNum()%2)printf(“-1n“);else if(start.num=end.num)printf(“0n“);elseprintf(“%dn“,BFS(); 4、 测试数据5、 算法复杂度分析是一种静态路网中求解最短路最有效的方法,分支限定思维是影响他效率的核心问题,好的限定方法可以得到高效的运行过程。而时间效率也随着限定的好坏来而有很大的差距,另一方面也随着题目要求的结果来定。 ,6、 与其他算法比较是一种静态路网中求解最短路最有效的方法,以让从在其他更高效的搜索限定方法,但此限定方法是很多搜索方法的基础,也是最为广泛的使用和指导。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报