当前位置: 首页 > news >正文

百钱百鸡问题(C++枚举法)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

题目:

    中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;妈雏三,值钱 百钱买百鸡,翁、母、维各几何?

 
算法设计1:

    通过对问题的理解,读者可能会想到列出两个三元一次方程,去解这个不定解方程,就能找出问题的解。这确实是一种办法,但现在要用“懒惰”的枚举策略进行算法设计。
     设x,y,z分别为公鸡、母鸡、小鸡的数量。
尝试范围:由题意给定共100钱要买百鸡 若全买公鸡最多买100/5=20只,显然x的取值范围在1~20之间;同理,y的取值范围在1~33之间,z的取值范围在1~100之间。
约束条件:x+y+x=100且5x+3y+x/3=100。

代码:

算法一:

#include<iostream>
using namespace std;
int main()
{
	int x,y,z;
	for(x=1;x<=20;x++) 
	for(y=1;y<=33;y++)
	for(z=1;z<=100;z++)
	if(100==x+y+z && 100==5*x+3*y+z/3)
	{
		cout<<"the cock number is"<<x<<endl;
		cout<<"the he number is"<<y<<endl;
		cout<<"the chick number is"<<z<<endl<<endl;
	}
}

结果:

 

算法分析:以上算法需要枚举尝试20×34×100=68000次。算法效率显然太低。
算法设计2:

    在公鸡(x)、母鸡(y)的数量确定后,小鸡的数量x就固定为100-x-y,无须再进行枚举了,此时约束条件只有一个:5x+3y+z/3=100


算法二:

#include<iostream>
using namespace std;
int main()
{
	int x,y,z;
	for(x=1;x<=20;x++) 
	for(y=1;y<=33;y++)
    {
    	z=100-x-y;
    	if(z%3==0 && 5*x+3*y+z/3==100)
    	{
		cout<<"the cock number is"<<x<<endl;
		cout<<"the he number is"<<y<<endl;
		cout<<"the chick number is"<<z<<endl<<endl;
	}
}
}

结果:

 总结:算法一更加全面。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了百钱百鸡问题(C++枚举法)。

相关文章:

  • 基于SSM实现智慧幼儿园信息管理系统
  • 九月组队学习计划!
  • OJ在线编程输入输出(Java版)
  • Matlab代码批处理中国地面气象日值数据集(2400站点数据集),提取所需省份全部站点数据
  • 链表之头指针、头结点、首元结点、空链表
  • 【Linux】静态库与共享库
  • POI入门
  • 07- 诊断事件diagnostic events的类图关系
  • 【C#】RestSharp踩坑日记
  • 自学5个月软件测试找到一个8k的工作,我的学习方式值得你借鉴
  • 【JavaEE初阶】文件操作 和 IO (下篇)
  • Nebula Studio:部署与连接
  • Redis 学习笔记
  • 萤火虫(FA)算法(附完整Matlab代码,可直接复制)
  • 01背包完全背包学习记录
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 〔开发系列〕一次关于小程序开发的深度总结
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • codis proxy处理流程
  • iOS 系统授权开发
  • Mybatis初体验
  • 聊聊flink的TableFactory
  • 前嗅ForeSpider教程:创建模板
  • 入门到放弃node系列之Hello Word篇
  • 三栏布局总结
  • 设计模式 开闭原则
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 赢得Docker挑战最佳实践
  • 字符串匹配基础上
  • 自制字幕遮挡器
  • 阿里云服务器如何修改远程端口?
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​​​​​​​​​​​​​​Γ函数
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $.ajax()
  • (Python) SOAP Web Service (HTTP POST)
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (规划)24届春招和25届暑假实习路线准备规划
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (小白学Java)Java简介和基本配置
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • .bat批处理(一):@echo off
  • .describe() python_Python-Win32com-Excel
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core 控制台程序读 appsettings.json 、注依赖、配日志、设 IOptions
  • .NET MVC第五章、模型绑定获取表单数据
  • .net反编译工具
  • .net快速开发框架源码分享
  • /etc/skel 目录作用
  • /usr/bin/env: node: No such file or directory
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [AX]AX2012开发新特性-禁止表或者表字段