0
点赞
收藏
分享

微信扫一扫

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

爱做梦的老巫婆 2022-02-03 阅读 60

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

题目
在这里插入图片描述

代码

#include <iostream>
#include <vector>
using namespace std;

//贪心,找不大于k的最大斐波那契数列,直至k=0 
int findMinFibonacciNumbers(int k) {
	vector<int> f;
	f.push_back(1); //f[0] = f[1]
	f.push_back(1); //f[1] = f[2]
	int f1 = 1, f2 = 1, f3; 
	//找到所有不大于k的斐波那契数列
	while(f1 + f2 <= k){
		f3 = f1 + f2;
		f.push_back(f3);
		f1 = f2;
		f2 = f3;
	} 
	int ans = 0;
	for(int i = f.size() - 1; i >= 0 && k > 0; i--){
		if(k - f[i] >= 0){
			k -= f[i];
			ans++;
		}
	}
	return ans;
}

int main(){
	int k, res;
	cin>>k; 
	res = findMinFibonacciNumbers(k);
	cout<<res;
	return 0;
}
举报

相关推荐

0 条评论