Java利用for循环解决经典算法题--“百钱买百鸡”

经典算法题–“百钱买百鸡”


三文钱可以买一只公鸡,两文钱可以买一只母鸡,一文钱可以买三只小鸡。问:用100文钱买100只鸡,公鸡、母鸡、小鸡的只数各有多少只?


题目中有三个未知数,用传统算法是不好计算的,但是计算机的运行机制很简单的可以计算出各种鸡的只数。


/**Author--Ziph
 * 百钱买百鸡--经典算法题
 * 鸡翁一,值钱三,鸡母一,值钱二,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?
 * 下面的版本是没有考虑某只鸡为0的现象,如果想要有0只鸡运行结果也就是6种。
 * 实现0只鸡的做法只要把for循环中的i、j变量定义为0即可
 */

public class TestBuyChicken {
	public static void main(String[] args) {
		//嵌套的for循环就是三种鸡因满足某种条件而得到各种鸡的个数
		//i<=33和j<=50,100文钱除以两种鸡的单价得到的,也就是说鸡在不满足条件下的最大只数
		for (int i = 1; i <= 33; i++) {//i代表公鸡的数量
			for (int j = 1; j <= 50; j++) {//j代表母鸡的数量
				//(100 - i - j)就是小鸡,不用担心它会减成负数,因为鸡一共100只
				if ((100 - i - j) % 3 == 0 && 3 * i + 2 * j + (100 - i - j) / 3 == 100) {
					//(100 - i - j) % 3 == 0  小鸡三只一文钱,小鸡数一定要能被3整除,否则算出的结果有问题
					//3 * i + 2 * j + (100 - i - j) / 3 == 100  各种鸡单价乘鸡的只数要求等于100文钱
					//下面是对各个鸡种数量的打印
					System.out.println("公鸡" + i + "只,母鸡" + j + "只,小鸡" + (100 - i - j) + "只。");
				}
			}
		}
	}
}

执行结果:
在这里插入图片描述

  • 15
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值