和为K的最少斐波那契数字数目
难度:中等
初三宜睡大觉。这道题提示可以使用贪心算法,但难点在于需要论证贪心算法结论的正确性。(我反正没看懂证明过程🙂)
代码如下:
public int findMinFibonacciNumbers(int k) {
int a = 1;
int b = 1;
int c = 0;
while(b<=k){
c = a+b;
a = b;
b = c;
}
int res = 0;
while (k != 0) {
if (k >= b) {
k -= b; res++;
}
c = b - a;
b = a; a = c;
}
return res;
}
执行结果:成功