现在的位置: 首页 > 综合 > 正文

以过桥算法来谈如何满足客户的需求和程序设计步骤

2011年11月14日 ⁄ 综合 ⁄ 共 6533字 ⁄ 字号 评论关闭
以过桥算法来谈如何满足客户的需求和程序设计步骤

    如果答案只停留在解决题目的表面,而不能抽象出此类问题,是不及格的。
正如,开发应用型软件,应站在行业的高度和全局去思考,而不仅仅是解决局部的问题。
所以实际的项目中,应有架构师来统领全局,看得更多更远一些。

一、需求
四个女人过桥,夜间有一火把,每次最多过两个,必需带火把,
过桥速度不一样
no.1 1min
no.2 2min
no3 5min
no.4 10min
两个人过用最慢一个的速度,火把不能扔
如何在17min内四个女人都过桥

二、人工模拟(对应需求分析)
人工计算机答案:
1+2=2过
1=1回
5+10=10过
2=2回
1+2=2过
计:2+1+10+2+2=17分钟

    在实际的项目开发中,应将用户的需求进行界面建模、打印结果、报表等可视化的资料和用户确认;才能将问题看得透一些,找到更好的思路。
    如从上述的模拟就可以总结出思路:1、大数应在一起相抵 2、回程应可能小。
     这就是一种抽象化解决问题的能力,相当于“数学模型”。

三、问题的拓展(对应概要设计)

从此算法可以提出下述进一步的需求,即程序要能适应:
1、当不是四个,而是四亿个如何过。即所谓的需求变更,且这种变更是可能和合理的
2、通用性,不仅仅是用来过桥,类似的算法如何能活用或复用

 
四、解决方案(对应详细设计)
//设初始时,人都在桥左,目前是全部走到桥右。即将客户的需求,转换为“输入”和“输出”
//根据目标和结束条件,总结出数学模型:即“1、大数应在一起相抵 2、回程应可能小”的思路

do

  //过桥
  if(计算桥右没有走得快的人) then
      走得快的人先一起走
  else
      走得最慢的人一起走
  end if
  //回程
  总是返回最近的人

while 桥左没有人

打印出结果
 
五、编码实现
   
由主程序和一个移动的对象两个文件组成。
   主程序:

Code

移动的对象:

Code

六、测试
   要将过桥的人数增加5个、10个、N个的情况下看是否也正确

源代码下载 :http://files.cnblogs.com/pinpkm/Bridge.rar

抱歉!评论已关闭.