JAVA编程,百鸡百钱问题
原题:公鸡5元/只,小鸡3元一只,问若100元买100只鸡,其中公鸡,母鸡,小鸡各多少?
最简单的想法就是运用循环进行暴力搜索解决问题,代码如下
package java1;
public class CalChicken {
public static void main(String args[]) {
//设公鸡数目为x,公鸡最大数目为50只
for(int x=0;x<=50;x++) {
//设母鸡数目为y,母鸡最大数目为33只
for(int y=0;y<=33;y++) {
//设小鸡数目为z,小鸡最大数目为300
for(int z=0;z<=300;z++) {
//利用公鸡,母鸡,小鸡数目和为100以及只有100元进行筛选
if((x*5+y*3+z/3)==100 && (x+y+z==100)) {
System.out.println("公鸡个数"+x+"只"+"母鸡个数"+y+"只"+"小鸡个数"+z+"只");
}
}
}
}
}
}
结果如下
从上可以看到时间复杂度为o(n^3),利用鸡的总数为100只,我们可以得到小鸡的数目z=100-x-y;利用这个关系,我们可以少一个循环结构,这样可以进行优化
package java1;
public class CalChicken {
public static void main(String args[]) {
//设公鸡数目为x,公鸡最大数目为50只
for(int x=0;x<=50;x++) {
//设母鸡数目为y,母鸡最大数目为33只
for(int y=0;y<=33;y++) {
//设小鸡数目为z,
int z;
z=100-x-y;
//利用只有100元进行筛选
if((x*5+y*3+z/3)==100 ) {
System.out.println("公鸡个数"+x+"只"+"母鸡个数"+y+"只"+"小鸡个数"+z+"只");
}
}
}
}
}