跳到主要内容

1414.和为K的最少斐波那契数字数目

链接:1414.和为K的最少斐波那契数字数目
难度:Medium
标签:贪心、数学
简介:给你数字 k ,请你返回和为 k 的斐波那契数字的最少数目,其中,每个斐波那契数字都可以被使用多次。

题解 1 - cpp

  • 编辑时间:2022-02-03
  • 内存消耗:5.9MB
  • 编程语言:cpp
  • 解法介绍:贪心策略。
int fib[] = {1,         1,        2,        3,         5,         8,
13, 21, 34, 55, 89, 144,
233, 377, 610, 987, 1597, 2584,
4181, 6765, 10946, 17711, 28657, 46368,
75025, 121393, 196418, 317811, 514229, 832040,
1346269, 2178309, 3524578, 5702887, 9227465, 14930352,
24157817, 39088169, 63245986, 102334155, 165580141, 267914296,
433494437, 701408733};
class Solution {
public:
int findMinFibonacciNumbers(int k) {
int cnt = 0;
for (int idx = 43; k; idx--) {
while (fib[idx] > k) idx--;
cnt += k / fib[idx];
k %= fib[idx];
}
return cnt;
}
};