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的最小值,获得最小步数
代码:
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); } }