C语言百钱百鸡问题代码及解析

栏目: C · 发布时间: 7年前

内容简介:中国古代数学家张丘健在他的《算经》中提出了一个著名的“百钱白鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?如果用百钱只买公鸡,最多可以买20只,但题目要求买一百只,所以公鸡数量在0~20之间。同理,母鸡数量在0~33之间。在此把公鸡、母鸡和小鸡的数量分别设为cock、hen、chicken,则 cock+hen+chicken=100,因此百钱买百鸡问题就转换成解不定方程组的问题了:

问题描述

中国古代数学家张丘健在他的《算经》中提出了一个著名的“百钱白鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只?

问题分析

如果用百钱只买公鸡,最多可以买20只,但题目要求买一百只,所以公鸡数量在0~20之间。同理,母鸡数量在0~33之间。在此把公鸡、母鸡和小鸡的数量分别设为cock、hen、chicken,则 cock+hen+chicken=100,因此百钱买百鸡问题就转换成解不定方程组的问题了:

C语言百钱百鸡问题代码及解析

算法设计

对于不定方程组,我们可以利用穷举循环的方法来解决,也就是通过对未知数可变范围的穷举验证方程在什么情况下成立,从而得到相应的解。公鸡范围是0~20,可用语句for(cock=0; cock<=20; cock++)实现。钱的数量是固定的,要买的鸡的数量也是固定的,母鸡数量是受到公鸡数量限制的,同理,小鸡数量受到公鸡和母鸡数量的限制,因此可以利用三层循环的嵌套来解决:第一层循环控制公鸡数量,第二层控制母鸡数量,最里层控制小鸡数量。即:

for(cock=0; cock<=20; cock++)  //外层循环控制公鸡数量范围

for(hen=0; hen<=33; hen++)  //内层循环控制母鸡数量范围

for(chicken=0; chicken<=100; chicken++)  //内层循环控制小鸡数量范围

{

//条件控制

printf(“cock=%2d, hen=%2d, chicken=%2d\n”, cock, hen, chicken);

}

下面是完整的代码:

#include<stdio.h>

int main()

{

int cock, hen, chicken;

for(cock=0; cock<=20; cock++)  //外层循环控制公鸡数量取值范围0~20

for(hen=0; hen<=33; hen++)  //内层循环控制母鸡数量取值范围0~30

for(chicken=0; chicken<=100; chicken++)  //内层循环控制小鸡数量取值范围0~100

{

if( (5*cock+3*hen+chicken/3.0==100) && (cock+hen+chicken==100) )

//在内外层循环条件控制下小鸡数量的取值限制用难一组解的合理性

printf("cock=%2d, en=%2d, chicken=%2d\n", cock, hen, chicken);

}

}

运行结果:

cock= 0, en=25, chicken=75

cock= 4, en=18, chicken=78

cock= 8, en=11, chicken=81

cock=12, en= 4, chicken=84

C语言百钱百鸡问题代码及解析

补充说明:根据这三层循环可得到多种方案,但有些事不符合条件的,因此结果输出之前需要筛选合理方案,控制条件语句为:

if((5*cock+3*hen+chicken/3==100) && (cock+hen+chicken==100))

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-12/155756.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Designing for Emotion

Designing for Emotion

Aarron Walter / Happy Cog / 2011-10-18 / USD 18.00

Make your users fall in love with your site via the precepts packed into this brief, charming book by MailChimp user experience design lead Aarron Walter. From classic psychology to case studies, high......一起来看看 《Designing for Emotion》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具