C语言编程问题

2024-11-25 05:36:02
推荐回答(1个)
回答1:

解题思路:完全跟百钱买百鸡的问题是一样的!设大马,中马,小马的匹数分别为x,y,z;可以得到两个方程:x+y+z=100; 3*x+2*y+z/2=100; 将第二个方程变形为:6*x+4*y+z=200; 从第二个方程变形的方程中,我们可以看到,x的最大值为200/6=33.3;即中马,小马都不用,只用大马最多用34;1<=x<=34; 同样中马y的最大值为200/4=50;1<=y<=50;再将第三个方程减去第一方程变成5*x+3*y=100;这个方程就是我们简化后的判断条件用枚举法求可的如下的程序:#include
int main()
{
int x,y,z;
for(x=1; x<=34; x++)
for(y=1; y<=50; y++)
if(5*x + 3*y == 100)
{
z=100-x-y;
printf("x=%d y=%d z=%d\n",x,y,z);
}
}