总结:从问题的不同角度出发能得出不同的算法。
例子:
一个包里有5元和2元现金共18张,总价值共60元整。求5元和2元各有几张。
解法一(二分法,二分次数随问题规模改变):(5*18)+(0*2)=90 ,90>60 ,90-60=30,30>5。
18/2=9, (9*5)+(9*2)=60,63>60,63-60=3,3<5。
所以在多一个或少一个5的范围内做微调。但由于63比60大,所以要减少5的个数。
当少一个5时:8*5=40,(18-8)*2+40 = 60。
所以有8张5元,10张2元。
解法二(解方程,从总个数出发):设五元X张
5X+2(18-X)=60
解方程可得结果。
或
设五元X张,两元Y张
5X+2Y=60
X+Y = 18
解方程可得结果。
解法三(假设全是小值,从值出发): 思路:假设18张全是2元,则当2元全部消失的时候,就只剩下5元的部分了。
60-18*2=24,
5-2=3,
24/3 = 8,
18-8 = 10。
所以有8张五元和10张2元。