今天看到了一题,意是:
百钱买百鸡大鸡三块钱一只,小鸡一块钱三只, 不大不小的鸡两块钱一只 ,求刚好用一百块钱买一百只鸡。
题目看上去就是纯纯的枚举方法,但是思考到,枚举很暴力,很消耗时间,算法的复杂度也很高,于是我就至力于将枚举法的时间复杂度降到最低。
不说别的,上代码:
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),减少了算法的时间复杂度,还是比较欣慰滴。。。嘻嘻
1770

被折叠的 条评论
为什么被折叠?



