枚举系列 百钱买鸡 Java版

今天看到了一题,意是:

百钱买百鸡大鸡三块钱一只,小鸡一块钱三只, 不大不小的鸡两块钱一只 ,求刚好用一百块钱买一百只鸡。

题目看上去就是纯纯的枚举方法,但是思考到,枚举很暴力,很消耗时间,算法的复杂度也很高,于是我就至力于将枚举法的时间复杂度降到最低。
不说别的,上代码:

public class Chicken {
	public static void main(String[] args) {
		int x, y, z;// x为大鸡数量,y为中鸡数量,z为小鸡数量
		int cost;// 费用
	        int count = 0;
		for (x = 0; x <= 33; x++) {
			for (y = 0; y <= 50; y++) {
				z = 100 - x - y;
				if (z % 3 == 0 && 3 * x + 2 * y + z / 3==100) {				
						System.out.println("大鸡的数量为:" + x + ",中鸡的数量为:" + y + ",小鸡的数量为:" + z);
				}
				count++;
			}
		}
		System.out.println(count);
	}
}

从代码上就可看出,我在for便利循环的时候减少了循环次数,并且将O(n3)转成O(n2),减少了算法的时间复杂度,还是比较欣慰滴。。。嘻嘻

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹏AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值