今天我们还是讲贪心算法。题目是:将一个真分数表示成若干个埃及分数的和。啥是埃及分数?例如:1/2这就是埃及分数,也就是分子为1的分数。例如:7/8=1/2+1/3+1/24。
那么怎么实现这个呢?
因为是加法运算,所以我们通过一项项的“拆项”来实现。
1.找出最大的埃及分数,使得f>1/n。
2.输出1/n.
3.f=f-1/n.
4.如果f是埃及分数则完成,否则继续第一步.
但是先要注意,高级语言不支持分数的运算,所以表示分数我们只能分别输入分子和分母。设分子是A,分母是B。则B/A的上为C,余数为K,B=A*C+K.。则B/A=C+K/A,而K<A,则K/A<1,所以B/A<c+1,令C+1=D,则A/B>1/D,因此我们求出了上面说的n。
其次,A/B-1/D=(AD-B)/BD,所以要分别计算A,D,B的值,然后对他们进行运算。