为了方便举一反三,从本篇博客起附题目。
/********************************************
**文件名:百炼-2749
**Copyright (c) 2015-2025 OrdinaryCrazy
**创建人:OrdinaryCrazy
**日期:20170807
**描述:百炼2749参考答案
**版本:1.0
*********************************************/
#include <stdio.h>
/*********************************************
这个问题的子问题不是很好找,
这是动态规划的一种题型,需要消除后效性,也就是原有的维度不够,
需要根据问题进行一次分解,增加维度,然后才能得到子问题
这个问题如果直接递归到因子的分法相乘,因为两个因子可能有公因子
所以会造成重解,要避免这种情况,我们可以这样想:
其实题目中有一个蛮关键的条件,就是说分解式要从小到大排列,这是一个
避免重解的突破口,我们就按照顺序来,首先对于第一个数,如果a(1)*a(1)>a
那么就与a(2)>a(1)矛盾,所以如果要枚举a1的可能值应该是2到a(1)*a(1)<=a
然后我们考虑对a/a(1)的分解问题,注意我们现在是有序的,也就是说a/a(1)的任何一个因子
都不能大