百炼-2749-分解因数-C语言-递归算法

为了方便举一反三,从本篇博客起附题目。

/********************************************
**文件名:百炼-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)的任何一个因子
都不能大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值