C语言编程问题

有一百匹马,挑一百担货 ,大马挑三担, 中马挑两担 ,两匹小马挑一担 ,问大中小马各多少匹

解题思路:完全跟百钱买百鸡的问题是一样的!设大马,中马,小马的匹数分别为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<stdio.h>
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);
}
}
温馨提示:答案为网友推荐,仅供参考