博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百钱买百鸡
阅读量:6199 次
发布时间:2019-06-21

本文共 939 字,大约阅读时间需要 3 分钟。

原文:

问题:“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一”.

说明:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,问如何用100钱买100只鸡?

设公鸡、母鸡、鸡雏分别值x,y,z钱。

a.算法一:穷举法

则:

  1<= x <=19,

  1<= y <=32,

  3<= z <=98(步长为3)

穷举法求解:

代码

1 for(int x=1;x<=19;x++)2   for(int y=1;y<=32;y++)3     for(int z=3;z<=98;z+=3)    //步长为34     {5          if( x+y+z==100 && 5*x+3*y+z/3==100 )  //百钱百鸡条件6          {7             printf("%d %d %d",x,y,z);8          }9     }

  穷举法遍历了所有可能出现的情况,最终也可以得到正确的结果,这是发挥了计算机的快速运算的能力,

但是这样子把问题全部抛给计算机去处理并不是我们所追求的,在这个问题上,其实可以让循环层数减少

到一层,我们知道“百钱买百鸡”这个问题的两个条件需要满足,第一个就是钱数为100,另一个为鸡数为100,

在算法一上我们是将这个条件放到了程序中去判断(if( x+y+z==100 && 5*x+3*y+z/3==100 )),

在算法二我将先将这两个条件的方程式组合成方程组,然后将方程组化简,最终再通过程序解决问题。

 

b.算法二:化简方程组

方程组:

  x+y+z=100,

  5x+3y+z/3=100

将上式整理得:

  y=25-7x/4,

  z=75+3x/4

x,y,z需要满足上式,并且通过式子可知x必须要为4的整数倍。

代码:

for(int x=4;x<=19;x+=4){   y=25-7*x/4;   z=75+3*x/4;   if( y>0 && z<=98 )     printf("%d %d %d",x,y,z);}

  算法二只循环了4次就得出了结果,提高了效率。

所以使用程序解决一个数学问题,首先还是要对问题进行充分的分析,

可以将问题转化为另外一种形式,使程序更加简洁和容易实现,何乐而不为呢?

转载地址:http://xcjca.baihongyu.com/

你可能感兴趣的文章
easyui简单使用
查看>>
DevExpress VCL 已死-----关于13.1.4的发布。
查看>>
关于Java中System.gc() 与System.runFinalization()
查看>>
Android杂谈--HTC等手机接收不到UDP广播报文的解决方案
查看>>
Oracle GoldenGate Veridata 12.1.3已经发布
查看>>
Octave中plot函数的用法
查看>>
高速阅读
查看>>
Android--------从一个包中的Avtivity创建另外另外一个包的Context
查看>>
strcpy函数的实现
查看>>
[LeetCode] Top K Frequent Elements 前K个高频元素
查看>>
Swift语法之 ---- ?和!区别
查看>>
mysql 将指定列的浮点数转化为整数
查看>>
iOS开发之支付宝集成
查看>>
MySQL入门02-MySQL二进制版本快速部署
查看>>
线程实例
查看>>
Jquery操作select、checkbox、radio详细讲解
查看>>
Rabbitmq -Publish_Subscribe模式- python编码实现
查看>>
EF方便的添加一条信息...
查看>>
SharpGL学习笔记(十七) 立体文字和平面文字
查看>>
React Native知识10-ListView组件
查看>>