在印刷行业信息化实践中,总是能遇到各种极富挑战性的需求,将我们推向疯癫的边缘。
最近要求实现版位预估算法,按照实际的组版规则进行计算。接过分析建模,抽象出如下的算法模型:
/*
*计算是否存在值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行代码,却默默体现了代码算法之美。
回顾设计,从组版算法分析->流程图描述->算法建模->算法实现,我觉一路走来不容易。循环计算的问题,最终还是要回到递归中来。每个递归其实就是一个梦境,程序员设计的梦境,每个程序员都是造梦师。
版权所有: IT货架- 内容来自互联网,仅供用于技术学习,请遵循相关法律法规. 京ICP备11030978号-1