百元买百鸡

公鸡:2元/只;母鸡:1.5/只;小鸡:0.5元/只,假设100元买100只鸡,要求不同的买法以及最高的效率!

穷举法

公鸡输为i,母鸡数为j,小鸡为k

int loopcount = 0;//循环次数int buycount = 0;//买法次数for(int i = 1;i <= 100;i++){//穷举法for(int j = 1;j <= 100;j++){for(int k =1;k <= 100;k++){loopcount++;if(i + j + k == 100 && 2*i+1.5*j+0.5*k == 100) {buycount++;System.out.println("买法"+buycount+"公鸡买"+i+"只,"+"母鸡买"+j+"只,"+"小鸡买"+k+"只");}}}}
System.out.println("循环次数:"+loopcount);


可见循环次数为一百万次,效率很低。

第二种解法

由于2i+1.5j+0.5k=100,公鸡数量不超过50只,母鸡数量不超过67只

int loopcount = 0;//循环次数
int buycount = 0;//买法次数
for(int i = 1;i <= 50;i++){for(int j = 1;j <= 67;j++){int k = 100-i-j;loopcount++;if(i + j + k == 100 && 2*i+1.5*j+0.5*k == 100) {buycount++;System.out.println("买法"+buycount+"公鸡买"+i+"只,"+"母鸡买"+j+"只,"+"小鸡买"+k+"只");}}
}
System.out.println("循环次数:"+loopcount);


可见循环次数为3350次,比上面的穷举法效率大大提高。

第三种解法

i+j+k=100 (1)
2i+1.5j+0.5k=100 (2)
联立三元一次方程,(2)- 0.5*(1)解得j = 50-1.5*i;
假设公鸡数为奇数,则剩余鸡数必是奇数,而一个奇数由两个整数相加,两个整数必是一奇一偶;而如果母鸡和小鸡任意一种鸡的数量是奇数,价格凑不出整数100元,所以公鸡数一定是偶数。

        int loopcount = 0;//循环次数int buycount = 0;//买法次数for(int i = 2;i <= 32;i+=2) {int j = (int)(50-1.5*i);//强制转换int k = 100-i-j;loopcount++;if(2*i+1.5*j+0.5*k == 100) {buycount++;System.out.println("买法"+buycount+"公鸡买"+i+"只,"+"母鸡买"+j+"只,"+"小鸡买"+k+"只");}}System.out.println("循环次数:"+loopcount);


上图可见循环次数为16,效率最高!

百元百鸡(最高效率)相关推荐

  1. C语言基础课 编写程序之1.百元买鸡,公鸡一只5元,母鸡一只3元,小鸡3只一元,现将一百元要买一百只鸡,公鸡母鸡小鸡各多少只2.编程求1~200中能被2除余1或能被3除余1或能被5除余1的前10个整数

    1.拿百元买鸡问题.公鸡一只5元,母鸡一只3元,小鸡3只一元,现将一百元要买一百只鸡,请问一百只鸡中公鸡,母鸡,小鸡各多少只 #include<stdio.h> int main() {i ...

  2. 67-C语言-百元买鸡问题

    问题: 百元买鸡,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,问翁.母.雏各几何? 思路: 这里采用枚举法--给每一个的情况都考虑率进去,最后在内循环,加限制条件即可 这里的情况分为三种,因为要买 ...

  3. Java数组练习题百元百鸡,不死神兔

    1.朋友聚会的时候可能会玩一个游戏:逢七过. ​ 规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说:过. ​ 为了帮助大家更好的玩这个游戏,这里我们直接在控制台打印出1-10 ...

  4. java递归解决百元百鸡_JS计算输出100元钱买100只鸡问题的解决方法

    本文实例讲述了JS计算输出100元钱买100只鸡问题的方法.分享给大家供大家参考,具体如下: 问题: 公鸡5元一只,母鸡3元一只,小鸡1元买三只,我现在有100元钱要买100只鸡,问怎么买? 解决方法 ...

  5. 蛮力算法百元百鸡java_每日一算法:百元百鸡

    100元买100只,题目:公鸡5元一只.母鸡3元一只.小鸡1元三只 求100元买一百只,各可以买几只 三个变量:公鸡数量为 x 母鸡数量为 y 小鸡数量为 z 满足条件: ①:x+y+z=100 ②: ...

  6. python百元买鸡问题_用python解决数学题——100块买100只鸡

    这道数学题目是这样的:市场上有公鸡.母鸡和小鸡,它们的价格分别是1块.3块和0.5块一只.问题是我有100块钱,想买100只鸡,可以有多少种买法? 解题的思路就是我们从题目中了解到,如果100块钱全买 ...

  7. 初识算法:百元买百鸡

    题目描述 百元百鸡问题.每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花100元钱买100只鸡,请问有哪些可能?试编程输出所有的组合.[注:每种鸡的数量都可以为零] 输入 无 输出 输出购买方案 ...

  8. 蛮力法求解百元买百鸡问题

    蛮力法(brute force methord,也称穷举法或者枚举法)是一种简单直接地解决问题的方法,常常直接基于问题的描述.所以,蛮力法也是最容易应用的方法. 蛮力法所依赖的基本技术是遍历(trav ...

  9. 枚举法解决百元买百鸡问题及性能优化

    枚举法解决百元买百鸡问题 枚举法解决百元买白鸡问题 基本思想:枚举法又称穷举法,它是根据题意枚举所有有可能的状态,并用问题给定的条件约束状态,检验哪些是需要的,哪些是不需要的. 枚举法的优缺点:优点: ...

最新文章

  1. vue打包后图片找不到情况
  2. Ubuntu16.04 LTS上安装Go1.10
  3. php $interval,如何在PHP中使用setInterval?
  4. 转 学习:设置Windows live writer “不发布”到博客园随笔
  5. linux查询所建文件夹,linux中的文件和文件夹的新建、查询、删除
  6. BZOJ3448 : [Usaco2014 Feb]Auto-complete
  7. mysql批量添加报错_技术分享 | MySQL 在批量插入时捕捉错误信息
  8. html让文本框左剧中对齐_Python—Text:功能强大的文本框
  9. Java使用HTTPClient4.3开发的公众平台消息模板的推送功能
  10. netbeans基于mysql学生信息_学生信息管理系统的设计与实现(NetBeans IDE,MySQL)
  11. 如何下载anaconda python3.7_如何安装Anaconda和Python
  12. js图表报表html5图表,介绍一个!非常简单非常方便!制作图表报表的js库 —— ichartjs 【详细操作】...
  13. LayaAir cacheAs 缓存与 visible 隐藏
  14. 计算机取证程序论文,计算机取证论文参考文献推荐 计算机取证论文参考文献哪里找...
  15. mysql微信昵称特殊符号_mysql保存微信昵称特殊字符的方法
  16. 管理部门使用计算机属于固定资产核算吗,固定资产核算管理内容
  17. unity从0开始摸鱼日记15,再接再厉
  18. 一款极简聊天应用,比较完整,略好看
  19. 关于win10基础上安装ubuntu遇到的坑
  20. MySQL的COUNT语句暗藏玄机

热门文章

  1. 5000字带你了解机房搬迁有哪些步骤?干货收藏!
  2. 浅谈PPT配色方案的认识与使用
  3. 在你的机器上实现杜比耳机系统
  4. 【Typora】自动生成markdown文档目录
  5. cad超级排孔_家具cad排孔图 爆破排孔图
  6. trace系列4 - kprobe学习笔记
  7. 联筑赚:盘扣脚手架构件维护保养及退场验收规范
  8. 台式计算机连接投影仪无信号,投影仪连接电脑后显示无信号该怎么排查原因?...
  9. 天正怎么批量填充柱子_天正里面怎样大批量统一修改柱子的宽度和偏移量,是否有快捷键可以统一修改?...
  10. 烧结机液压系统比例阀控制器