每日小语
正是他的意图损坏了他的悟性。——《充足理由律的四重根》
思考
有点鸡兔同笼的感觉嗷,
//100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。计算大中小马的数目(
public class HorsesPackGoods9
{
public static void main(String[] args)
{
int b = 0;//大马
int m = 0;//中马
int s = 0;//小马
if(3*b+2*m+s*0.5 == 100)
{
System.out.println("大马数目:"+b);
System.out.println("中马数目:"+m);
System.out.println("小马数目:"+s);
}
}
}
我点运行运行不了?
原来是我还忽视了一个条件,就是大中小马加一起100
看了gpt后发现必须要写for循环,这是为什么?
在这个问题中,我们需要找到满足条件的大、中、小马的数量组合,使它们一共承载了100担货物。由于不知道具体的大、中、小马数量,因此我们需要遍历所有可能的组合,直到找到符合条件的解。
使用嵌套的for循环可以很好地遍历所有可能的大、中、小马数量组合。外层循环控制大马的数量,内层循环控制中马的数量,然后通过计算得到小马的数量。在每一次循环中,我们计算当前大、中、小马数量组合是否满足条件,如果满足条件则输出结果并结束程序。
因此,使用for循环可以帮助我们系统地遍历所有可能的解空间,找到符合条件的解。
遍历:
当解决问题时,遍历是一种常用的方法,通过遍历可以尝试所有可能的情况,找到满足条件的解。在这个问题中,我们需要找到大、中、小马的数量,使得它们的总数为100,同时满足货物数量为100担的条件。
在代码中,我们使用了两层嵌套的循环来遍历可能的大、中马的数量。首先,外层循环遍历大马的数量`b`,范围从0到100,表示大马的数量可能从0匹到100匹。然后,在内层循环中,我们遍历中马的数量`m`,范围从0到剩余数量(100-b),这是因为中马的数量不能超过剩余的总数量。
在每一次循环中,我们计算小马的数量`s`,即总数量减去大、中马的数量。然后,我们根据题目中的条件进行判断:大马一匹承载3担货物,中马一匹承载2担货物,小马两匹承载1担货物。因此,我们计算出总货物数量是否为100担,即`3*b + 2*m + s*0.5 == 100`。
当找到满足条件的解时,我们输出大、中、小马的数量,并使用`return`语句结束程序,因为题目只要求输出一个解。
通过这种遍历的方式,我们可以尝试所有可能的情况,找到满足条件的解。遍历是一种强大的工具,可以帮助我们解决各种问题,尤其是在需要尝试多种情况的情况下。
终极代码
//100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担。计算大中小马的数目(
public class HorsesPackGoods9
{
public static void main(String[] args)
{
for (int b = 0; b <= 100; b++)
{ // b大马,s小马,m中马
for (int m = 0; m <= 100 - b; m++)
{
int s = 100 - b - m; // 计算小马数量
if(s+m+b==100&&3*b+2*m+s*0.5 == 100)
{
System.out.println("大马数目:"+b);
System.out.println("中马数目:"+m);
System.out.println("小马数目:"+s);
return;
}
}
}
}
}
撒花花~遍历还没有深入我的脑海~