算法设计与分析实验

算法设计与分析实验

ID:14392320

大小:49.06 KB

页数:12页

时间:2018-07-28

算法设计与分析实验_第1页
算法设计与分析实验_第2页
算法设计与分析实验_第3页
算法设计与分析实验_第4页
算法设计与分析实验_第5页
资源描述:

《算法设计与分析实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、算法设计与分析学号:120410101姓名:陈颖萍班级:1204101日期:2014.01.01实验题目11-1问题描述:括号检验:输入一个代数表达式,表达式只能含有+,—,*,/,1,2,3,4,5,6,7,8,9,0字符且每个数字均小于10,设表达式除括号外匹配有误外,再无其他错误。编写算法对输入的表达式进行检验,判断括号匹配是否正确。正确的:错误的:1+2+4(1+)2(1+2)+4(1+2(4+3))(1+2)(1+2+3*(4+5()))1+2+3*(4+5))1-2问题分析:编写算法对输入的

2、表达式进行检测,判断括号匹配是否正确。如果对于输入的表示能按照正确的优先级将最终结果求出那么表达式肯定是正确的。而如果要求出最终结果,效率会低,那么对运算过程进行简化,按照所给的表达式推导出最终可以求出结果那么表达式肯定是正确的,括弧肯定匹配。 1-3策略选择:采用蛮力法,从右向左处理表达式一旦出现错误的情况直接输出不匹配退出,否则继续进行处理直至表达式结束。用栈作为存储结构约定优先级。Stack S,OP;  S存储运算符,OP存储参与运算的数字。遇到‘(’、数字,时直接压入相应的栈中,当遇到+、-、

3、*、/操作符是先把栈S中的栈顶元素取出比较相应的优先级,若当前操作符的优先级低与栈顶的则进行一次运算。不断计算直至符合结束条件。1-4模型:采用信息数字化的方法,用栈作为存储结构约定优先级。Stack S,OP;  S存储运算符,OP存储参与运算的数字。遇到‘(’、数字,时直接压入相应的栈中,当遇到+、-、*、/操作符是先把栈S中的栈顶元素取出比较相应的优先级,若当前操作符的优先级低与栈顶的则进行一次运算。由于问题要求的是单位数而进行相应的运算后可能会变成小数,或多位数,若对其进行处理会麻烦,则默认运算

4、后结果是1,将以压入相应的栈中。若在运算过程中不能进行或不可操作则说明表达式不正确。1-5时间及空间复杂度分析1-6算法描述(流程图):1-7算法实现:1-8测试及说明:1-9总结实验题目22-1问题描述: 某售货员要到若干城市去推销商品,已知个城市之间的路程(或旅费)。要选择一条从驻地出发,经过每一个城市一遍,最后回到驻地的路线,使总的路线最小。问题的解为从一个带权图中找到一个包含所有顶点的回路,且该回路的权值之和最小。用邻接矩阵存储图。2-2问题分析:该问题可以用邻接矩阵存储图,图的下标表示两个城市

5、,图的权值表示两城市间的路程,此时的邻接矩阵是关于主对角线对称的。在此问题中要设定NoEdge=-1来表示当两个城市间无通路时邻接矩阵存储的值,方便在连接结点时进行判断。2-3策略选择:采用蛮力枚举的递归法,递归出口为i=n+1表示到达第n+1层也就是最后一个结点,此时完成了递归。递归公式为Traveling(i+1,n),表示继续判断下一个结点是否能连接。2-4模型:开始memset(G,NoEdge,sizeof(G))T=1T<=m输入i,j,lenG[i][j]=len;G[j][i]=lenT

6、++T=1I<=nx[i]=iT++bestc=-1;cc=0结束采用递归公式的抽象的方法,问题的解为含有N个节点的一条回路,可以尝试将所有的路径都找出来找到权值之和最小的一条路径就为问题的解。向当前求解的路径中不断加入新的节点,当节点数为N时一条新的回路产生。可以路径的长度为控制量,用递归的方法求解所有的路径,如果有边与前一顶点相连且此点之前距离和仍小于最小值,那么可以选择这条路径,继续递归直至达到递归出口。2-5时间及空间复杂度分析时间复杂度:T(log2n)空间复杂度:S(n2)2-6算法描述(流

7、程图):2-7算法实现:#includeusingnamespacestd;constintNoEdge=-1;//表示两城市间不通constintMAX=20;intG[MAX][MAX];intans[MAX],x[MAX];intbestc,cc;voidinit(intn,intm){inti,j,len,t;memset(G,NoEdge,sizeof(G));//将图的加权邻接矩阵初始化为-1cout<<"请输入城市间的路程"<

8、){cin>>i>>j;cin>>len;G[i][j]=len;//给加权邻接矩阵赋值G[j][i]=len;}for(i=1;i<=n;i++)x[i]=i;开始T=iI=jJ=t结束bestc=-1;//0x7fffffff表示赋权值无限大,也可以是INT_MAX常量cc=0;//当前路程}voidSwap(int&i,int&j){intt;t=i;i=j;j=t;}开始I=n+1G[x[n-1]][x[n]]!=NoEdge&&G

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。