@Java
经典算法题–“百钱买百鸡”
大家好,我是Ziph!
题目:
三文钱可以买一只公鸡,两文钱可以买一只母鸡,一文钱可以买三只小鸡。问:用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) + "只。");
}
}
}
}
}
执行结果:
OK,问题已解决。如还有问题请留言或回复!