[面试题] 5,7,12通过加减得到n,求最小步数(特点是5+7=12)

本文详细介绍了如何通过使用5,7,12进行加减运算,最少步骤达到目标数的算法。通过限制条件,优化搜索过程,实现快速求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设由A到B需要k步,分别是A1,A2,……Ak,每一步都是(5,-5,7,-7,12,-12)中一个。因为最终结果就是
A1+A2+……+Ak,所以这k步是可以调换顺序的(加法交换律)。

1> 如果这k步里,同时存在5,-5,那么可以约去。同理,(7,-7),(12,-12)也是。即最多存在8种选择,选定了一个数,那么它的相反数就不能出现。

2> 7+5=12,(-7)+(-5)=(-12),12+(-7)=5,12+(-5)=7,(-12)+7=(-5),(-12)+5=(-7),

即(7,5)(-7,-5)(12,-7)(12,-5)(-12,7)(-12,5)任何一对都不能同时出现,这样,又进一步缩小了范围。
可能性只有
5 -7的组合
-5 7的组合
5 12的组合
7 12的组合
-5 -12的组合
-7 -12的组合

3> 如果有7个5,可以用5个7替代,所以知道5的个数不超过7,同理,有
-5的个数不超过7
7的个数不超过12
-7的个数不超过12

有了这么多限制条件,只需要试一下即可。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值