解决楼层分配问题.docVIP

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

一、题目: 楼层分配问题(24) 二、设计思路 1、总体设计 分析程序的功能。 本程序是为了实现得到所有满足限制条件的楼层分配方案。 系统总体结构。 所写程序主体思路是固定人,使楼层按题目要求变化。从而得到所需要的情况。主要由四功能模块组成。具体是: 主函数,定义全局变量。 找到所有可能的楼层分配方案。 用分配函数限制所有的情况。 (4) 输出满足条件的情况。 第二功能模块是用来所有的排列组合情况,第三功能模块是对第二功能模块生成的排列组合情况按照要求进行筛选得到题目要求的分配方案,第四功能模块是将筛选后的分配情况进行输出。 2.各功能模块的设计。 第一功能模块是定义一个数组,各个数组元素依次等于1,2,3,4,5,分别代表五个楼层。调用一个排列函数,实现限制功能。 第二功能模块利用一个五层循环嵌套,来实现找到所有可能的楼层分配方案。在实现方法上,使用一个if条件控制语句,使各个数组元素各不相同,即实现了找到所有可能的楼层分配方案。在此功能模块的最后再定义一个分配函数,为实现题目后来的限制条件作准备。 第三功能模块是实现分配函数的调用,从而根据限制条件进行筛选。在分配函数中,定义A,B,C,D,E 分别等于数组中各元素变量,这样就实现了楼层变化代表人的住所变化的转移。运用一个if条件控制语句,对所有的排列根据题目要求进行限制。由于已经把数组元素向A,B,C,D,E五个人身上转移,所以对于题目的限制条件,例如:A不住一楼,可直接让A不等于1;C,D住上下楼可直接让C减去D的绝对值等于1;还有E住的比C高的问题,直接令E大于C即可 第四功能模块是已经经过第三,第二功能模块条件判断方案进行输出。可用cout直接输出结果。 在此程序中第二功能模块是第一功能模块的调用函数,第三功能模块是嵌套在第二个功能模块里的,是对题目条件的限制函数。 3、设计中的主要困难及解决方案 困难1 如何实现所有可能的楼层分配? 解决办法:利用一个五层循环直接实现它。 困难2 如何对主调函数再进行限制? 解决办法:再创建一个函数。 4、你所设计的程序最终完成的功能 找到所有满足题目条件的分配方案,并输出。 结果: A:2楼B:1楼C:3楼D:4楼E:5楼 A:2楼B:1楼C:4楼D:3楼E:5楼 A:3楼B:4楼C:1楼D:2楼E:5楼 A:3楼B:4楼C:2楼D:1楼E:5楼 A:4楼B:1楼C:2楼D:3楼E:5楼 A:4楼B:1楼C:3楼D:2楼E:5楼 A:4楼B:3楼C:1楼D:2楼E:5楼 A:4楼B:3楼C:2楼D:1楼E:5楼 A:5楼B:1楼C:2楼D:3楼E:4楼 A:5楼B:1楼C:3楼D:2楼E:4楼 三、程序清单 #include #include void pailie int floor[] ; //函数原型声明 void fenpei int i,int j,int k,int l,int m ; //函数原型声明 void main int floor[5] 1,2,3,4,5 ; //定义一个数组代表各个楼层 pailie floor ; //主函数 void pailie int floor[] //函数调用 int i,j,k,l,m; for i 0;i 5;i++ for j 0;j 5;j++ for k 0;k 5;k++ for l 0;l 5;l++ for m 0;m 5;m++ //五层循环 if floor[i]! floor[j]floor[i]! floor[k]floor[i]! floor[l] floor[i]! floor[m]floor[j]! floor[k]floor[j]! floor[l] floor[j]! floor[m]floor[k]! floor[l]floor[k]! floor[m] floor[l]! floor[m] //所有可能的分配方案 fenpei floor[i],floor[j],floor[k],floor[l],floor[m] ; void fenpei int i,int j,int k,int l,int m //函数调用 int A, B ,C ,D ,E ; A i; B j; C k; D l; E m; if A! 1B! 5fabs C-D 1E C //限制条件 cout A: A 楼 B: B 楼 C: C 楼 D: D 楼 E: E 楼 \n endl; //输出 四、对该设计题目有何更完善的方案 在函数调用方面运用的比较成功,分别实现了五层循环和条件限制。 五、收获及心得体会 虽然本次课程设计要求独立完成,但在此过程中不免会遇到各种问题。通过自主学习查

文档评论(0)

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

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

1亿VIP精品文档

相关文档