《24点程序设计报告.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《24点程序设计报告

程序设计实践报告 ( 2011 / 2012学年 第 二 学期) 题 目: 算24点问题 专 业 学 生 姓 名 班 级 学 号 指 导 教 师 王志伟 指 导 单 位 计算机学院信息安全系 日 期 2012.5.28 ~ 2012.6.8 评 分 细 则 评分项 优秀 良好 中等 差 遵守机房规章制度 上机时的表现 学习态度 程序准备情况 程序设计能力 团队合作精神 课题功能实现情况 算法设计合理性 用户界面设计 报告书写认真程度 内容详实程度 文字表达熟练程度 回答问题准确度 简 短 评 语 教师签名: 年 月 日 评分等级 备注 评分等级有五种:优秀、良好、中等、及格、不及格 算24点问题 课题内容和要求 在屏幕上输入1~10范围内的4个整数(可以重复),对它们进行加、减、乘、除四则运算后(可以加括号限定计算的优先级),寻找计算结果等于24的表达式。例如输入4个整数4,5,6,7,可得到表达式4*((5-6)+7)=24。这只是一个解,本题目要求编程求出全部解。要求表达式中的数字顺序不能变。 本题的关键问题是如何确定解空间。假如输入的4个整数A,B,C,D,如果不考虑括号的优先级情况,仅仅用四则运算连接,共有4^3=64种表达式情形。如果考虑加括号,共有5种情形。将两种情况综合考虑,共有64*4=320中表达式。本题的任务就是在这320种表达式中寻找24的表达式。 二、概要设计 总体设计: 应用穷举法搜索整个解空间,筛选出符合题目要求的全部解。关键的问题是如何确定该题的解空间。假设输入的4个整数为A、B、C、D,如果不考虑括号优先级的情况,仅用四则运算符将它们连接,例如:A+B*C/D…,共有43=64种表达式情形。如果考虑加括号的情况,暂不考虑运算符,共有以下5种情形: ((A□B)□C)□D (A□(B□C))□D A□(B□(C□D)) A□((B□C)□D) (A□B)□(C□D) 其中□代表(+-*/)任意的运算符。将上面两种情况综合起来考虑,每输入4个整数,其构成的解空间为64*5=320种表达式。也就是说,每输入4个整数,无论以什么方式或优先级进行四则运算,其结果都会在这320种答案之中。我们的任务就是在这320种表达式中寻找出计算结果为24的表达式。 具体的实施办法: 步骤1.将不同位置上的运算符设置成为不同的变量:A op1 B op2 C op3 D 规定变量op1、op2、op3取值范围为1、2、3、4,分别表示加、减、乘,除四种运算。如表1所示。 表1? 变量op1、op2、op3与运算符的对应情况 op1、op2、op3 变量值 表示的运算 op1、op2、op3 变量值 表示的运算 1 + 3 * 2 – 4 / 这样通过一个4重循环就可以枚举出不考虑括号情况的64种表达式类型。算法如下: for(op1=1;op1=4;op1++) ? ????for(op2=1;op2=4;op2++) ? ????????for(op3=1;op3=4;op3++) ? {得到一种不含括号的表达式情形:A?op1?B?op2?C?op3?D}? 步骤2.在表达式中添加括号,以及如何通过每种表达式的状态计算出对应的表达式的值。 上述算法得到的每一种表达式都可能具有5种添加括号的方式。而这5种添加括号的方式实际上涵盖了该表达式的所有优先级可能的运算。例如表达式:A+B-C*D的5种添加括号的方式为: ((A+B)-C)*D (A+(B-C))*D A+(B-(C*D)) A+((B-C)*D) (A+B)-(C*D) 由于每一种表达式的计算顺序(优先级)不尽相同,为了避免表达式运算的麻烦,可以设置5个函数,分别对应每一种类型表达式的计算: 函数1:对应表达式类型:((A□B)□C)□D 声明:float?calculate_model1(float?i,float?j,float?k,float?t,int?op1,int?op2,int?op3) ; 实现代码?:flo

文档评论(0)

wangz118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档