12-百钱买百鸡(算法)
来源:互联网 发布:淘宝上架宝贝图片尺寸 编辑:程序博客网 时间:2024/06/05 05:24
问题
中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
如果要是列方程:
设公鸡x只,母鸡y只,小鸡则为100-x-y只。
则有5x+3y+(100-x-y)/3=100
化解为7x+4y=100
因为x最大可以为20,
由方程可知x必定是偶数 所以可能是0,2,4,6,8,10,12,14,16,18,20
然后带入方程计算,得到y的只可以是:25,11,18,4
然后如果要用程序怎么做呢?
/** * 百钱买百鸡 * * @author supermanxkq * */public class Test10 {public static void main(String[] args) {for (float gongji = 0; gongji <= 20;gongji++) {for (float muji = 0; muji <=33; muji++) {for (float xiaoji = 0; xiaoji <=100; xiaoji++) {if(gongji+muji+xiaoji==100&&gongji*5+muji*3+xiaoji/3==100){System.out.println(" 公鸡:"+gongji+" 母鸡:"+muji+" 小鸡:"+xiaoji);}}}}}}
因为鸡的个数定义成了整型后,小鸡的个数有可能不是整数,所以将鸡的个数定义为浮点型,来保证最后总共花的钱数是个整数100。
不过也有其他的方法。见下图,方法有四种。
类似百钱买百鸡的例子还有计算1元,2元,5元组合成10元的方法。
public class Test11 {public static void main(String[] args) {System.out.println("输出组成10元的所有的方法:");int method = 0;for (int i = 0; i <= 10; i++) {for (int j = 0; j <= 5; j++) {for (int k = 0; k <= 2; k++) {if (i * 1 + j * 2 + k * 5 == 10) {System.out.println("1元:" + i + " 2元:" + j + " 5元:"+ k);method++;}}}}System.out.println("共有" + method+"种方法!");}}
- 12-百钱买百鸡(算法)
- 算法、排序(12)
- dsa算法(12)
- 算法导论(12)
- 算法导论读书笔记(12)
- Java与算法(12)
- EM算法(算法原理+算法收敛性)
- 算法复习 - Dijkstra算法(迪杰斯特拉算法)
- PHP百钱买百鸡算法(穷举算法)
- 算法基础(MD5算法)
- KMP算法(《算法导论》)
- 算法笔记(选择算法)
- 静下心来写算法(KMP算法)
- 【算法】AES(Rijndael算法)
- Floyd算法(弗洛伊德算法)
- prim算法(普里姆算法)
- 欧几里德算法(最大公约数算法)
- Prim算法(普里姆算法)
- adb server 问题
- linux启动项的设置
- 抽象类与接口的深入分析
- Objective-C学习——NSString字符串的那些事儿(三)
- 在linux中限制用户ftp访问权限
- 12-百钱买百鸡(算法)
- ios uitableview里点击界面退出键盘的实现和一些疑惑
- vsFTPd 服务器初学者指南
- ASP.NET 使用Request.Files获取<input type=file/>上传文件
- 遍历数据表
- live555 64bit
- 谁说ios不可以自定义控件?(可用xib拖动的)
- textarea的maxlength和wrap属性
- 再谈Jquery Ajax方法传递到action