谷歌 鸡蛋测楼层

来源:互联网 发布:java小游戏代码 编辑:程序博客网 时间:2024/04/30 08:23
package code.improved;public class ThrowEggs {    //谷歌高楼扔鸡蛋问题    //从T层高楼扔下鸡蛋,用何种方式使得在最坏情况下,使尝试的次数最少    public static void main(String[] args) {        int T=100;        int[] mall=new int[T+1];//初始化一个数组,用于存储递归过程中的中间数据        System.out.println(f(T,mall));       }    //递归算法    static int f(int n,int[] mall){        if(n<0) System.out.println("error");        if(n==0) return mall[0]=0;        if(mall[n]!=0) return mall[n];        int fn_1=f(n-1,mall);//递归函数的结果赋值给局部变量,让递归函数只执行一遍。        //将f(n-i)的第一个结果f(n-1)的结果赋值给minResult,以方便后面循环中的比较。        int result=0,minResult=0>=fn_1?1:fn_1+1;        //遍历不同的i,找到最小的f(n)作为返回        for (int i = 2; i <= n; i++) {            int fn_i=f(n-i,mall);            result=i-1>=fn_i?i:fn_i+1;            minResult=result<minResult?result:minResult;        }           return mall[n]=minResult;    }}
原创粉丝点击