【C、C++系列-10】C语言实现:百钱买百鸡问题

1. 问题

百钱买百鸡问题:我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题。该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?请编写C程序,解决“百钱买百鸡”问题。

2. 解决方案

将鸡翁、鸡母、鸡雏的数量分别从0到100进行变量,最后筛选条件为:钱的总数为100,鸡雏的数量能被3整除,鸡的总数为100。

3. 实现代码

#include <stdio.h>/*** 百钱买百鸡问题:我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题。该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?请编写C程序,解决“百钱买百鸡”问题。* @return 程序的退出状态*/
int main(void) {// 鸡翁、鸡母、鸡雏的数量int i, j, k;printf("百钱买百鸡的可能方案有:\n");for (i = 0; i <= 100; i++) {for (j = 0; j <= 100; j++) {for (k = 0; k <= 100; k++) {// 条件:钱的总数为100,鸡雏的数量能被3整除,鸡的总数为100if (5 * i + 3 * j + k / 3 == 100 && k % 3 == 0 && i + j + k == 100) {printf("鸡翁=%d,鸡母=%d,鸡雏=%d\n", i, j, k);}}}}getchar();return 0;
}

4. 执行结果

执行结果:

百钱买百鸡的可能方案有:
鸡翁=0,鸡母=25,鸡雏=75
鸡翁=4,鸡母=18,鸡雏=78
鸡翁=8,鸡母=11,鸡雏=81
鸡翁=12,鸡母=4,鸡雏=84Process finished with exit code 0

5. 解决方法说明——穷举法

基本概念:穷举法(Exhaustive Attack method),它是一种最为直接,最容易实现,同时又最为耗时的一种解决问题的算法思想。

穷举法算法的基本思想是:在可能的解空间中穷举出每一种可能的解,并对每一个可能解进行判断,从中得到问题的答案。

穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。

若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。穷举法也称为枚举法。

用穷举法解题时,就是按照某种方式列举问题答案的过程。针对问题的数据类型而言,常用的列举方法一有如下三种:

  • (1)顺序列举 是指答案范围内的各种情况很容易与自然数对应甚至就是自然数,可以按自然数的变化顺序去列举。

  • (2)排列列举 有时答案的数据形式是一组数的排列,列举出所有答案所在范围内的排列,为排列列举。

  • (3)组合列举 当答案的数据形式为一些元素的组合时,往往需要用组合列举。组合是无序的。

暴力搜索或穷举搜索,在计算机科学中也称生成与测试,是一种非常低效的解决问题的技术,方法包括了系统地枚举解决方案的所有可能候选项,以及检查每个候选项是否符合问题描述。

找出自然数n的约数的暴力搜索算法将枚举出从1到n的所有整数,并检查它们中的每一个是否除n后没有余数。针对八皇后问题的暴力搜索算法会检查所有在8X8棋盘上八个“皇后”可能的摆放方法,并且,对每一种摆放方法,检查其每一个“皇后”是否能攻击到其它人。

虽然暴力搜索很容易实现,并且如果解决方案存在,它就一定能够找到。但是它的代价是和候选方案的数量成正比,由于这一点,在很多实际问题中,消耗的代价会随着问题规模的增加而快速地增长。因此,当问题规模有限,或当存在可用于将候选解决方案的集合减少到可管理大小的针对特定问题的启发式算法时,通常使用暴力搜索。另外,当实现方法的简单度比速度更重要的时候,也会用到这种方法。

例如,在关键的应用中,或当用计算机证明数学定理时,算法中的任何错误将会导致严重的后果。暴力搜索也可在其他基准化算法和启发式算法里用作基准方法。事实上,暴力搜索可以被看作最简单的启发式算法。暴力搜索与回溯概念是不相同的,在回溯算法中,大量的解决方案并没有被枚举而直接被丢弃(例如上文提到的“八皇后问题”的解决方案)。用于在表中查找一个项目,也就是说顺序地检查表中所有条目的暴力方法被称为线性搜索。

【C、C++系列-10】C语言实现:百钱买百鸡问题相关推荐

  1. c语言 百钱买百鸡问题

    c语言 百钱买百鸡问题 如题 话不多说了,直接上代码 如题 公元钱五世纪,我国古代数学家张丘建在<算经>一书中提出了"百鸡问题":鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱 ...

  2. C语言试题七十六之请编写函实现百钱买百鸡

    1. 题目 编写函数:中国古代数学家张丘建在他的<算经>中提出了一个著名的"百钱买百鸡问题",鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁.母.雏各 ...

  3. 【C语言基础练习】百钱买百鸡问题。母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只?

    百钱买百鸡问题.母鸡3元钱一只,小鸡1元钱三只,问100元钱要刚好买100只鸡,编程实现母鸡和小鸡各多少只? 1 #include<stdio.h>2 int main()3 {4 int ...

  4. 6.17 C语言练习(百钱百鸡问题:中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?)

    [练习] 题目要求:中国古代数学家张丘建在他的<算经>中提出了著名的"百钱买百鸡问题"鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁.母.雏各几何? ...

  5. 百钱买百鸡(C语言,枚举法)

    养成好习惯,点个赞 再走:有问题,欢迎私信.评论,我看到都会回复的 百钱买百鸡 我国古代数学家张丘建在<算经>一书中曾提出过著名的"百钱买百鸡"问题, 该问题叙述如下: ...

  6. C语言学习:百钱买百鸡问题详解(附源码)

    问题: 中国古代数学家张丘建在他的<算经>中提出了一个著名的"百钱买百鸡问题":鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁.母.雏各几何? 代码: ...

  7. OJ1074: 百钱买百鸡(C语言)

    题目描述 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡.母鸡.小鸡各买多少只? 本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡.母鸡 ...

  8. 以“百钱买百鸡”问题练习使用 C语言 goto 语句

    虽然goto语句由于会破坏程序的结构而不被推荐使用,但是当需要从多重循环跳出时就比较合理且高效,以此题为例可见goto语句的妙用 题目描述 百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文 ...

  9. 信息学奥赛C++语言:百钱买百鸡

    [题目描述] 百钱买百鸡问题.鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? (公鸡一只5块,母鸡一只3块,小鸡三只1块,问要用100块买100只鸡,公鸡.母鸡 ...

最新文章

  1. 作品[RFileRead/WriteStream 练习] for s60 fp2
  2. 机器学习算法基础(基础机器学习课程)——第一天
  3. SQLite FTS3/FTS4与一些使用心得
  4. SqlServer 添加用户 添加角色 分配权限
  5. mysql 查询空字符串 设置默认值_MySQL默认值选型是空,还是 NULL-爱可生
  6. 记录excel翻车现场
  7. Atitit sql查询语法 SQL SELECT完整语法 3 1.SELECT语法 3 2.FROM子句 5 3.WHERE子句 6 下面两张表将在后面使用到 7 1.比较运算符 7 2.逻辑
  8. 笔试c语言实现栈,栈的实现与操作(C语言实现)
  9. 秒杀服务,秒杀系统设计与实现
  10. 03_D-H参数表的建立
  11. symbian塞班系统支持格式
  12. 路过图床插件,支持一键上传返回各类链接
  13. 通过注册表设置默认打印机的方法
  14. 【超实用】python批量ppt转图片,pdf转图片,word转图片脚本,直接拿去用
  15. HTML5+CSS3小实例:菜单悬停特效
  16. 现代计算机理论模型与工作原理
  17. 我是如何在一周内准备完所有保研材料并成功保送北航的
  18. 【python】经纬度坐标(以度为单位)转换为经纬度(度分秒为单位)
  19. C文件操作、读写文件 C++文件读写、文件操作
  20. 升压型直流开关电源基本原理

热门文章

  1. webpack中的Loaders和plugin
  2. Qt 字符串合成语音并播放(QTextToSpeech)
  3. 现代密码学-密码学概论与基本知识
  4. 大学生交友平台——结构化需求分析与建模
  5. [亲测有效] 如何实现vivo图案解锁
  6. 正确理解Avalon MM总线的动态地址寻址Dynamic Addressing
  7. 解决笔记本电脑(NV47H18C)必须完全放电才能开机的问题
  8. 局域网连接: 手机网络调试助手连接不上电脑网络调试助手
  9. Redis Sentinel主从复制自动切换方案
  10. windows的时间同步工具:w32time