频道栏目
IT货架 > > 正文
编程艺术之美,代码也玩穿越
网友分享于:Jun 12, 2018 11:59:57 PM    来源: IT货架   

在印刷行业信息化实践中,总是能遇到各种极富挑战性的需求,将我们推向疯癫的边缘。

最近要求实现版位预估算法,按照实际的组版规则进行计算。接过分析建模,抽象出如下的算法模型:

   /*

    *计算是否存在值X1,X2,...,Xm,使等式成立 m*X1+(m-1)*X2+(m-3)*X3+...+Xm=E

    *如果可解,取解集中各X的值,要求X1尽可能大,其次是X2,...Xm,X确定情况下存在多解,则E取最大

    *已知条件:

    *1)其中E为36,32,23,18中的一个数字

    *2)m,X1,X2,...,Xm为零或正整数

    *3)m的值已知

    *4)X1,X2,...,Xm的最大值已知

    *

    * 求解思路

    * 将以上算法抽象成m*X1=E-Y1,Y1=(m-1)*X2+(m-3)*X3+...+Xm,

    * 然后对X1和Y1进行求解,对Y1的求解转化为(m-1)*X2=Y1-Y2,Y2=(m-3)*X3+...+Xm,以此类推

    * 最终在Yn为0时,得出解

    * 如果不存在Yn=0,则解不存在

*/

 代码如下:

不过这区区50行代码,却默默体现了代码算法之美。

回顾设计,从组版算法分析->流程图描述->算法建模->算法实现,我觉一路走来不容易。循环计算的问题,最终还是要回到递归中来。每个递归其实就是一个梦境,程序员设计的梦境,每个程序员都是造梦师。

广告服务联系QQ:1134687142 | 网站地图

版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1