java经典算法-day9

133 阅读3分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

哈喽,各位小伙伴们好,我是喵手。

一、前言

正值金三银四好时节,又到了刷题月。xdm,有空的欢迎一起呀。无论你是挤公交还是坐地铁时间,随时随地皆可刷...你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。

二、题目描述:

题目1:

输入三个整数x,y,z,请把这三个数由小到大输出。

题目2:

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

三、思路分析:

题1分析:

        拿到这题,可能最先想到的就是两两比较,先把最小的找出来,然后再比较剩下两个谁更大,这样三个数就可以按顺序进行大小输出了。

题2分析:

        这题就很数学问题了,可能初中的时候,有写过这样的函数题,最后进行求解,算法都可以换算成编程来表示:假设第一天摘了n个桃子,最后,剩一个,从最后一个进行逆推,找找规律,就好了。第十天:1个;第九天:4个,第八天:10个; 第七天:22个;第六天:46个... 所以我们干脆写一个循环,因为我们知道第几次还剩多少个,从后往前逆推。

四、算法实现:

题1AC代码:

第一步,排列组合三个数字,总共就三种可能性。

依次是x>y;x>z;y>z;

/**
 * 三个数进行比较
 */
public static void sort() {

    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入第一个数:");
    int x = scanner.nextInt();

    System.out.println("请输入第二个数:");
    int y = scanner.nextInt();

    System.out.println("请输入第三个数:");
    int z = scanner.nextInt();

    //定义一个临时变量
    int temp;

    //枚举三种情况,然后交换数字大小。
    if (x > y) {
        temp = y;
        y = x;
        x = temp;
    }
    if (x > z) {
        temp = z;
        z = x;
        x = temp;
    }
    if (y > z) {
        temp = z;
        z = y;
        y = temp;
    }
    System.out.println("这三个数从小到大依次输出为:"+x+" "+y+" "+z);
}

题2****AC代码:

/**
 * 猴子吃桃问题
 *
 * @param day 吃到第几天
 * @param peach 桃子剩余数
 */
public static int hzct(int peach, int day) {

    for (int i = 1; i < day; i++) {
        peach = 2 * (peach + 1); //从最后一天计算
    }
    return peach;
}

五、总结:

综上,第一道题就是运用排列组合进行排序,反正就三种可能性,你可以不使用循环就可以实现。第二道就是数学题,曾记得数学试卷就出过这道题,但是此刻使用代码来实现,也好做呀,找规律解题,害怕的就是规律没有找到,这不我就给你们进行了详细说明,仅供参考。

如果你有更好的解题思路或者想法,欢迎评论区留言告诉我哦,喵手感激不尽。

六、文末:

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

... ...

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

---------------------------------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

---------------------------------------------------------------------