Fibonacci数列最小步数

1.题目:


2.解析:

让a,b,c回滚构造斐波那契数列 :a=b, b=c, c=a+b;

输入的数 n小于c,在b,c之间,只要 n+1 或者 n-1(贪心思想: n只加一或者只减一

最后再求n-b,c-n的最小值,获得最小步数

代码:

java 复制代码
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int a = 0, b = 1,c = 1;
        int ret = 0;
        while(n > c){
            a=b;
            b=c;
            c=a+b;
            if(n > b && n < c) {
                ret = Math.min(n-b,c-n);
            }
        }

        System.out.print(ret);        
    }
}
相关推荐
玲娜贝儿--努力学习买大鸡腿版5 小时前
hot 100 刷题记录(1)
数据结构·python·算法
123过去6 小时前
pixiewps使用教程
linux·网络·测试工具·算法·哈希算法
深圳市快瞳科技有限公司6 小时前
低空经济下,鸟类识别算法与无人机硬件的兼容性优化策略
算法·无人机
努力中的编程者6 小时前
二叉树(C语言底层实现)
c语言·开发语言·数据结构·c++·算法
鹤旗6 小时前
While语句,do-while语句,for语句
java·jvm·算法
qq_416018726 小时前
高性能密码学库
开发语言·c++·算法
NAGNIP6 小时前
一文搞懂卷积神经网络经典架构-LeNet
算法·面试
宵时待雨6 小时前
C++笔记归纳14:AVL树
开发语言·数据结构·c++·笔记·算法
NAGNIP7 小时前
一文搞懂深度学习中的池化!
算法·面试
山川行7 小时前
关于《项目C语言》专栏的总结
c语言·开发语言·数据结构·vscode·python·算法·visual studio code