从数学角度看 设男,女,儿童为x,y,z。
列不等式组:
x+y+z = 36;
4x+3y+1/2z = 36
求x,y,z的值就好了。
数学的解法是讲究推理。程序呢不讲究推理,你只要模拟试数的过程就好了。
那么我应该按照什么原则试数呢?
首先确定x,y,z的范围
0<=x <= 36/4=9
0<=y<=36/3=12
0<=z<=36/0.5=18且z为偶数,因为1个小孩办不了一块砖。
然后看看x,y,z是否符合这个不等式组。
程序如下:
include <stdio.h>int main(void)
{
for(int x = 0 x <= 9 ++x)
{
for(int y = 0 y <= 12 ++y)
{
for(int z = 0 z <= 18 z += 2)
{
if(x+y+z == 36 && 4x+3y+z/2 == 36)
printf("男%d,女%d,小孩%d", x, y , z)
}
}
}
return 0
}
此程序不是最高效的,但是你看的懂。
#include<stdio.h>void main()
{
int man,wman,child,zz
for(man=0man<=9man++)
{
for(wman=0wman<=12wman++)
{
child=36-wman-man
if(36==child/2+3*wman+4*man&&child%2==0)printf("man=%d\nwman=%d\nchild=%d\n",man,wman,child)
}
}
}
为什么?可以取到吧。main()
{
int a,b,c
for(a=04*a<=36a++)
for(b=04*a+3*b<=36b++)
for(c=04*a+3*b+c/2<=36c+=2)
if(4*a+3*b+c/2==36)
printf("\nman:%3dwoman:%3dchild:%3d",a,b,c)
}