




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告设计题:在表达式“123456789=100”中的左边的适当位置插入运算符“+”或“-”,以使等式成立。例如123+45-67+8-9=100.问题分析:1、 输出表达式时应作为字符串输出,方便得到结果,因此应该定义一个函数实现把int变量转化为string型。(用string类是为了便于表达,即可直接用cout,+等。2、 123456789中间有8个“空”,每个“空”有“+”“-”“空格”三种选择,故一共有38种可能。又需要所得到的表达式满足结果为100,即类似于有约束条件的进行深度优先遍历。设计所用软件及运行环境: Visual C+6.0 Windows 7操作系统算法设计概要:1、 要利用递归。递归出口即满足表达式的运算结果为100并且完成了一遍从1到9的过程,满足条件则输出结果,并且记录满足的记录个数。否则,对三种可能情况写对应的三个递归函数,一直到满足条件为止。2、 输出函数要注意消除字符串数组中无用字符。程序运行结果:运行结果一共171个。(因屏幕有限故截取前后两部分图片) 程序调试:1、 最开始出来的程序是这个样子。即表达式前边出现了一些无用的字符。而根据我自己的分析应该是使用递归函数时可能往字符串数组里存入了一些无用的字符。所以应该在每次输出表达式的时候都要删掉那些无用的字符。2、 关于三个递归函数的顺序。调整三个函数的顺序总的结果不会改变,但是表达式出现的位置会发生变化。这个源于递归尤其是嵌套的递归实现的内部过程是一种折线型的。递归可以避免大量重复的运算,但是也要注意其顺序问题。幸而这道题里面不用考虑表达式的顺序。观察前面25个记录。 合并、减法、加法 加法、合并、减法 减法、加法、合并设计总结与体会:在学习数据结构这门课的时候一直不知道学的东西应该怎么使用,比如链表、树、图等存储结构,但是通过这次的课程设计,我终于对它们有所体会了。收获最深的一是关于递归的使用,二是C+程序设计关于string类的使用。刚拿到题目的时候觉得跟做24点很相似,分析了一下又有不同。除开24点的规则跟这道题的规则不一样外,比较重要的一点就是24点的四个数的位置可以变换,而这道题里的9个数则不可以。之前看过一些24点的相关算法,有暴力穷举这样最直接却也最简单的算法。所以我也自然而然地想采用这种算法。况且跟24点的四种运算比起来,38=6561种可能并不算太多。但是事实证明这并不是个好点子,至少对我的脑子来说,光考虑设置怎样的函数将这些可能都包含进来就够令我头疼,还莫谈它们还有顺序。遇到瓶颈的时候在网上查资料看到有用递归的思想做的算法,顿时有种豁然开朗的感觉。照这样的想法做下来,程序也相当简单。在程序编译运行的过程中也遇到一些问题,尤其是关于string类的相关运用,比如string属于C+标准库,不能使用.h的C头文件,而必须使用命名空间std来声明。总的来说通过这次课程设计弥补了之前数据结构课程学习中的缺陷,让我受益良多。附录:源程序#include#includeusing namespace std;int total=1;void print(string str)couttotal+: ;int i=0,length=str.length();while(ilength&stri!=1) i+;/去掉前面无用字符 for(;ilength;i+) coutstri;cout=1000)str+=char(0+n/N);/将n按位取出,转化为字符型n=n%N;N=N/10;return str;void function(int cur,int pre,string str,int result)if(result=100&cur10)/搜索到最后一个数9print(str);/输出符合条件的表达式else if(cur10) return;else function(cur+1,pre*10+cur,str,result);/与前一个数合并function(cur+1,cur,str+atos(pre),result+pre);/与前一个数做加法,str+atos(pre)表示表达式。function
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 九年级物理下册 11.4 核能教学设计 (新版)教科版
- 二年级品德与生活上册 变来变去的水教学设计2 北师大版
- 专题三第2课《阅读材料 3D打印技术的应用与发展》教学设计 2023-2024学年青岛版(2018)初中信息技术八年级上册
- 2024四川大决策证券投资顾问有限公司招聘笔试参考题库附带答案详解
- 复工消防安全培训
- 2024华山国际工程有限公司总部招聘6人笔试参考题库附带答案详解
- 人教版四年级音乐上册(五线谱)第5单元《唱歌 那达慕之歌》教学设计
- 对公客户经理综合能力提升培训大纲
- 三年级下数学教案小数的认识-人教版
- 铂金珠宝知识培训
- 2024年土地流转的合同模板
- 2024年第三届浙江技能大赛(电工赛项)理论考试题库(含答案)
- 2024年度-工程造价培训课件全新
- 高标准农田跟踪审计、工程中间计量、变更价格调整及竣工结算审核项目投标方案(技术方案)
- 行政事务试题库及答案
- 教师备课教案模板
- 2023中央空调智能化控制技术规范
- 第八章+机械能守恒定律+单元教学设计及案例分析+课件-+物理人教版(2019)必修第二册
- 7《中华民族一家亲》第一课时《中华民族大家庭》(说课教学设计)部编版道德与法治五年上册
- 五年级科学实验模拟训练(4)附有答案
- 施工企业生产安全事故应急资源调查报告
评论
0/150
提交评论