/* P74 循环语句的嵌套 2020-03-16 14:37:10
* 5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买三只雏鸡,现在用100文钱买100只鸡,那么公鸡母鸡雏鸡各多少只?
*
↓↓↓↓↓错误代码↓↓↓↓↓
public class Cce_BuyChicken {
public static void main(String[] args) {
int cock = 0; // 公鸡
int hen = 0; // 母鸡
int poult = 0; // 小鸡
for (cock = 1; cock <= 20; cock++) {
for (hen = 1; hen <= cock; hen++) {
for (poult = 1; poult <= hen; poult++) {
}
}
}
System.out.println("100文钱能刚好用完能买" + (cock + hen + poult) + "只鸡.");
System.out.println("其中公鸡有" + cock + "只," + "母鸡有" + hen + "只," + "小鸡有" + poult + "只.");
}
}
/*print:(错误答案)
100文钱能刚好用完能买63只鸡.
其中公鸡有21只,母鸡有21只,小鸡有21只.
================================================================================================
*思路: 1、公鸡cock的限制数=100/5,母鸡hen的限制数=100/3,小鸡chick的限制数=100/(1/3)=300,
因为有100只数限制,所以小鸡也是最多能买100只.可得出三种鸡在for循环里的范围:0~20;0~33;0~100
2、所以限制条件有2个:
①买鸡的钱:cock * 5 + hen * 3 + chick / 3 == 100
②鸡的数量:cock + hen + chick == 100(公鸡母鸡小鸡数和要等于100)
*/
↓↓↓↓↓正确答案↓↓↓↓↓
public class Cce_BuyChicken { // 百钱买百鸡
public static void main(String[] args) {
int cock, hen, chick; // 公鸡、母鸡、小鸡
for (cock = 0; cock <= 20; cock++) { // 最多买20只公鸡
for (hen = 0; hen <= 33; hen++) { // 最多买33只母鸡
for (chick = 3; chick <= 99; chick += 3) { // 最多买99只小鸡(有“百鸡”的限制)
if (5 * cock + 3 * hen + chick / 3 == 100) // 百钱
{
if (cock + hen + chick == 100) // 百鸡
{
System.out.println("公鸡:" + cock + "\t母鸡:" + hen + "\t小鸡:" + chick);
}
}
}
}
}
}
}
/*print:
公鸡:0 母鸡:25 小鸡:75
公鸡:4 母鸡:18 小鸡:78
公鸡:8 母鸡:11 小鸡:81
公鸡:12 母鸡:4 小鸡:84
*/