欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    数据结构课程设计报告在表达式123456789=100中左边的适当位置插入运算符+或,以使等式成立.docx

    • 资源ID:3560239       资源大小:38.20KB        全文页数:4页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计报告在表达式123456789=100中左边的适当位置插入运算符+或,以使等式成立.docx

    数据结构课程设计报告在表达式123456789=100中左边的适当位置插入运算符+或,以使等式成立课程设计报告 设计题: 在表达式“123456789=100”中的左边的适当位置插入运算符“+”或“-”,以使等式成立。 例如123+45-67+8-9=100. 问题分析: 1、输出表达式时应作为字符串输出,方便得到结果,因此应该定义一个函数实现把int变量转化为string型。 1 / 6 2 / 6 程序调试: 1、 最开始出来的程序是这个样子。即表达式前边出现了一些无用的字符。而根据我自己的分析应该是使用递归函数时可能往字符串数组里存入了一些无用的字符。所以应该在每次输出表达式的时候都要删掉那些无用的字符。 2、关于三个递归函数的顺序。 调整三个函数的顺序总的结果不会改变,但是表达式出现的位置会发生变化。这个源于递归尤其是嵌套的递归实现的内部过程是一种折线型的。递归可以避免大量重复的运算,但是也要注意其顺序问题。幸而这道题里面不用考虑表达式的顺序。 观察前面25个记录。 合并、减法、加法 加法、合并、减法 3 / 6 减法、加法、合并 设计总结与体会: 在学习数据结构这门课的时候一直不知道学的东西应该怎么使用,比如链表、树、图等存储结构,但是通过这次的课程设计,我终于对它们有所体会了。收获最深的一是关于递归的使用,二是C+程序设计关于string类的使用。 刚拿到题目的时候觉得跟做24点很相似,分析了一下又有不同。除开24点的规则跟这道题的规则不一样外,比较重要的一点就是24点的四个数的位置可以变 4 / 6 换,而这道题里的9个数则不可以。之前看过一些24点的相关算法,有暴力穷举这样最直接却也最简单的算法。所以我也自然而然地想采用这种算法。况且跟24点的四种运算比起来,38=6561种可能并不算太多。 但是事实证明这并不是个好点子,至少对我的脑子来说,光考虑设置怎样的函数将这些可能都包含进来就够令我头疼,还莫谈它们还有顺序。遇到瓶颈的时候在网上查资料看到有用递归的思想做的算法,顿时有种豁然开朗的感觉。照这样的想法做下来,程序也相当简单。 在程序编译运行的过程中也遇到一些问题,尤其是关于string类的相关运用,比如string属于C+标准库,不能使用.h的C头文件,而必须使用命名空间std来声明。 总的来说通过这次课程设计弥补了之前数据结构课程学习中的缺陷,让我受益良多。 附录: 源程序 #include<iostream> #include<string> using namespace std; int total=1; void print(string str) cout<<total+<<": " int i=0,length=str.length; while(i<length&&stri!='1') i+;/去掉前面无用字符 for(;i<length;i+) cout<<stri; string atos(int n)/ 数字转换成字符函数 if(n=0) return "0" string str="" cout<<"=100"<<endl; int N=1000000000;/19能组成的最大的数的数量级 5 / 6 while(n/N=0) N=N/10;/确定n的数量级 while(n>0) return str; str+=char('0'+n/N);/将n按位取出,转化为字符型 n=n%N; N=N/10; void function(int cur,int pre,string str,int result) if(result=100&&cur>10)/搜索到最后一个数9 print(str);/输出符合条件的表达式 else if(cur>10) return; else function(cur+1,pre*10+cur,str,result);/与前一个数合并 function(cur+1,cur,str+"+"+atos(pre),result+pre);/与前一个数做加法,str+"+"+atos(pre)表示表达式。 main function(0,0," ",0); return 0; function(cur+1,cur,str+"-"+atos(pre),result-pre);/与前一个数做减法,同上。 6 / 6

    注意事项

    本文(数据结构课程设计报告在表达式123456789=100中左边的适当位置插入运算符+或,以使等式成立.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开