温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java经典算法问题怎么解决

发布时间:2022-10-21 14:38:25 来源:亿速云 阅读:136 作者:iii 栏目:编程语言

本篇内容介绍了“java经典算法问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

题目描述:

题目1:

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

题目2:

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

思路分析:

题1分析:

       这道题既视感就像是做初三的物理题,有没有?但是这道题不需要考虑空气阻力,每次回弹是上一次高度的一半,其实到这里,就明白了[100,50,25,12,5,6,25...]。每一次高度是上一次的一半,则第二次就可以理解成,

  • h2 = 100,s1 = (h2+h2/2);

  • h3 = 50,s2 =(h3+h3/2);

  • h4 = 25,s3 =(h4+h4/2);

  • ...

题2分析:

       这题既视感就像是高中数学中的排列组合,题意就是要求四个不重复数字中,任何组合共有多少种且数字不重复,最直接的做法就是运用排列组合的逻辑思想,进行解答即可。

算法实现:

题1AC代码:

/**
 * 第count次小球落地,共经过多少米?
 */
public static Map<String, Double> sumLj(int count) {
    //用于记录距离与高度
    Map<String, Double> map = new HashMap<>();
    double s = 0;
    double h = 100;
    for (int i = 0; i <= count; i++) {
        //掉落的高度
        s += h;
        //高度减半,顺便记录下一弹的高度
        h = h / 2;
        //叠加弹上的高度
        s += h;
    }
    //添加返回值
    map.put("s", s);
    map.put("h", h);
    return map;
}

题2AC代码:

public static Map plzh() {

    Map map = new HashMap<>();
    //记录排列的每一个数字
    List<Integer> list = new ArrayList<>();
    //记录排法
    int count = 0;
    for (int i = 1; i <= 4; i++) {
        for (int j = 1; j <= 4; j++) {
            for (int k = 1; k <= 4; k++) {
                //数字不可重复使用
                if (i != j && j != k && k != i) {
                    //记录次数
                    count += 1;
                    //排列数字
                    int temp = i * 100 + j * 10 + k;
                    //添加数字
                    list.add(temp);
                }
            }
        }
    }
    map.put("count", count);
    map.put("list", list);
    return map;
}

“java经典算法问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI