凑数求解简单来说指得就是如果知道一个目标数值,那么我将会从数据表格中选择哪几项凑到一起,加起来之后得和正好就是目标数值。这就是凑数求解得简单解释。
账务中通常用于合并账单数据。
金额 | 解法 | |
300 | ||
100 | 1 | 100 |
300 | 0 | |
500 | 1 | 500 |
150 | 1 | 150 |
250 | 1 | 250 |
1000 |
第1步:启用“规划求解”加载项:
方法 :excel-文件-选项:
第2步:在目标单元格中放置计算公式:
第3步:使用规划求解,设置参数
第4步:获得凑数个数
====以上操作过程虽然能够解决问题,但是显然非常繁琐,而且答案显然不唯一,如何求取更多合乎要求得解法呢?或者推广开去,如果目标参数1000可变呢?
第5步,编程实现:
300=300100=100300=300500=500150=150250=250300,100=400300,300=600300,500=800300,150=450300,250=550100,300=400100,500=600100,150=250100,250=350300,500=800300,150=450300,250=550500,150=650500,250=750150,250=400300,100,300=700300,100,500=900300,100,150=550300,100,250=650300,300,500=1100300,300,150=750300,300,250=850300,500,150=950300,500,250=1050300,150,250=700100,300,500=900100,300,150=550100,300,250=650100,500,150=750100,500,250=850100,150,250=500300,500,150=950300,500,250=1050300,150,250=700500,150,250=900300,100,300,500=1200300,100,300,150=850300,100,300,250=950300,100,500,150=1050300,100,500,250=1150300,100,150,250=800300,300,500,150=1250300,300,500,250=1350300,300,150,250=1000凑数成功300,500,150,250=1200100,300,500,150=1050100,300,500,250=1150100,300,150,250=800100,500,150,250=1000凑数成功300,500,150,250=1200300,100,300,500,150=1350300,100,300,500,250=1450300,100,300,150,250=1100300,100,500,150,250=1300300,300,500,150,250=1500100,300,500,150,250=1300300,100,300,500,150,250=1600
以上把所有1位到6位组合都推算出来,并计算了目标值及比对结果。
300,300,150,250=1000凑数成功
100,500,150,250=1000凑数成功
答案显而易见:有2组解。规划求解只解出了一种答案。
第6步:反思:
如果在生成组合前进行预排序,数值都会按从小到大排序,这样结果更有规律,显示也更整齐。