zoukankan      html  css  js  c++  java
  • 以过桥算法来谈如何满足客户的需求和程序设计步骤

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

    一、需求
    四个女人过桥,夜间有一火把,每次最多过两个,必需带火把,
    过桥速度不一样
    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个的情况下看是否也正确

    源代码下载 :https://files.cnblogs.com/pinpkm/Bridge.rar
  • 相关阅读:
    IDEA(jetbrain通用)优雅级使用教程(转)
    intellij idea 修改背景保护色&&修改字体&&快捷键大全(转)
    淘宝可伸缩高性能互联网架构HSF(转)
    spring利用注解@Value获取properties属性为null
    String.valueOf()方法注意
    Spring任务调度器之Task的使用(转)
    Mybatis集成(转)
    深入理解mybatis原理, Mybatis初始化SqlSessionFactory机制详解(转)
    Spring+Mybatis+SpringMVC+Maven+MySql搭建实例(转)
    Spring4.2+SpringMVC+Mybatis3.4的集成(转-)
  • 原文地址:https://www.cnblogs.com/fjwuyongzhi/p/1561410.html
Copyright © 2011-2022 走看看