前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【算法】百钱百鸡-Go实现

【算法】百钱百鸡-Go实现

作者头像
MaybeHC
发布2024-04-23 19:34:47
610
发布2024-04-23 19:34:47
举报
文章被收录于专栏:技术之路技术之路

题目

公鸡 5钱/只 母鸡3钱/只 小鸡1钱/3只 需要用一百钱买一百鸡

先用个最粗暴的方式完成题目,之后进行优化,我用count变量来计算循环次数

方法1

实现

代码语言:javascript
复制
func main1() {
	count:=0
	for i := 0; i <= 20; i++ {
		for j := 0; j <= 33 ; j++{
			for k := 0; k <= 100 ; k++{
				count++
				if i+j+k ==100 && i*5 + j*3 +k/3 ==100  && k%3 ==0{
					fmt.Printf("公鸡%d ,母鸡%d , 小鸡%d\n",i,j,k)
				}
			}
		}
	}
	fmt.Println("次数",count)
}

结果

在这里插入图片描述
在这里插入图片描述

优化1

我们可以看到小鸡每次都会是3只一起买的,我们可以对小鸡每次增长的数量进行变化,每次增长3,通过运行可以看到次数明显减少

代码语言:javascript
复制
func main() {
	//优化1 小鸡每次都需要买3只,小鸡每次增长数量设置为3
	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  && k%3 ==0{
					fmt.Printf("公鸡%d ,母鸡%d , 小鸡%d\n",i,j,k)
				}
			}
		}
	}
	fmt.Println("次数",count)
}
在这里插入图片描述
在这里插入图片描述

优化2

我们可以发现小鸡的个数 = 100-公鸡-母鸡,这样可以减掉一层循环

代码语言:javascript
复制
func main() {
	//优化2 小鸡的个数 = 100-公鸡-母鸡
	count:=0
	for i := 0; i <= 20; i++ {
		for j := 0; j <= 33 ; j++{
			count++
			k := 200 - i - j
			if i*5 + j*3 +k/3 ==100  && k%3 ==0{
				fmt.Printf("公鸡%d ,母鸡%d , 小鸡%d\n",i,j,k)
			}
		}
	}
	fmt.Println("次数",count)
}
在这里插入图片描述
在这里插入图片描述

更优解法可以简化为一层循环,需要运用数学的方法求出三种鸡直接的关系进行优化,这里就不说了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
    • 方法1
      • 优化1
        • 优化2
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档