美文网首页
算法题--百钱白鸡

算法题--百钱白鸡

作者: Jaycee88 | 来源:发表于2022-03-15 00:22 被阅读0次

古代数学家 张丘建 算经 百钱百鸡
题目:公鸡5钱一只 母鸡3钱一只 小鸡1钱三只 现在需要用百钱买百鸡
100 买公鸡 20只
100 买母鸡 33只
100 买小鸡 100只

最暴力算法

func main() {
    count := 0
    for i := 0; i <= 20; i++ {
        for j := 0; j <= 33; j++ {
            for k := 0; k <= 100; k++ {
                count++
                if k%3 == 0 && i+j+k == 100 && i*5+j*3+k/3 == 100 {
                    fmt.Println("公鸡:", i, "母鸡:", j, "小鸡:", k)
                }
            }
        }
    }
    fmt.Println(count) //72114
}

优化一:
小鸡必须为3的倍数,所以k的步长可以改为3

func main() {
    count := 0
    for i := 0; i <= 20; i++ {
        for j := 0; j <= 33; j++ {
            for k := 0; k <= 100; k += 3 {
                count++
                if i+j+k == 100 && i*5+j*3+k/3 == 100 {
                    fmt.Println("公鸡:", i, "母鸡:", j, "小鸡:", k)
                }
            }
        }
    }
    fmt.Println(count) //24276
}

优化二:
当知道了公鸡和母鸡的只数后,小鸡的只数可以算出来(100 - i - j),因此可以去掉一层for循环

func main() {
    count := 0
    for i := 0; i <= 20; i++ {
        for j := 0; j <= 33; j++ {
            count++
            //小鸡个数 100-公鸡-母鸡
            k := 100 - i - j
            if k%3 == 0 && i*5+j*3+k/3 == 100 {
                fmt.Println("公鸡:", i, "母鸡:", j, "小鸡:", k)
            }
        }
    }
    fmt.Println(count) //714
}

优化三:
母鸡和小鸡都跟3有关系,所以公鸡只能为2的倍数

func main() {
    count := 0
    for i := 0; i <= 20; i += 2 {
        for j := 0; j <= 33; j++ {
            count++
            //小鸡个数 100-公鸡-母鸡
            k := 100 - i - j
            if k%3 == 0 && i*5+j*3+k/3 == 100 {
                fmt.Println("公鸡:", i, "母鸡:", j, "小鸡:", k)
            }
        }
    }
    fmt.Println(count) //374
}

相关文章

  • 算法题--百钱白鸡

    古代数学家 张丘建 算经 百钱百鸡题目:公鸡5钱一只 母鸡3钱一只 小鸡1钱三只 现在需要用百钱买百鸡100 ...

  • Android面经| 算法题解

    整理了校招面试算法题,部分《剑指offer》算法题,以及LeetCode算法题,本博文中算法题均使用Java实现校...

  • 如何用JS买鸡?

    学习JS有段时间了,学了基本的逻辑题,下面我为大家讲一道复杂的百元买白鸡的数学题,与小学题不同,我们能用JS直接知...

  • 面试题高频算法题整理

    以下算法题几乎都是简单题,都为面试算法题值得刷的题,需要理解并记住解题思路,而其中★标注的题,更是面试算法题中的高...

  • 回溯,贪心,动态规划

    1.回溯算法思想leetcode 112 号算法题:路径总和leetcode 113 号算法题:路径总和 IIle...

  • 【悠哉.分享.道茶“白鸡冠”】

    白鸡冠,无味而达致大味。 白鸡冠作为武夷岩茶四大名丛(大红袍、白鸡冠、铁罗汉、水金龟)之一,因产量...

  • 大白鸡

    下午时分,正是阳光充足的时候,我搬了凳子坐在院子里晒太阳。暖暖的阳光晒得人睡意昏沉。“嘎——”一声突兀的鸡鸣打破了...

  • 白鸡菇

    买了白鸡菇,没看有效期,丢在冰箱,放了几天。今天解冻,一看不能吃了,看日期,保鲜2天。以后这些,要买回当天吃。翻看...

  • 算法题

    一、对一组数据进行降序或者升序排序(冒泡算法) intnums[10] = {4,5,1,10,7,1,8,3,6...

  • 算法题

    现在有一个字符串 string,它是一段英文,要求你统计这段英文里每个字母出现的次数。*例如输入 'Hello',...

网友评论

      本文标题:算法题--百钱白鸡

      本文链接:https://www.haomeiwen.com/subject/kyeedrtx.html