#include
#include
main()
{
int man,woman,kid;
printf( "Man Women Children\n" );
for(man=0;man<16;man++){
for(woman=0;woman<25;woman++){
kid=30-man-woman;
if(kid>0&&kid+woman*2+man*3==50)
printf("%3d%8d%8d\n" ,man,woman,kid);
}
}
system("pause");
}
此问题类似于鸡兔同笼的问题。。。
如果是必须要男人女人小孩至少一个的话,变量初始值要设为1。即man和woman改为1。
#include
int main(){
int man,woman,body;
int i,j,m;
printf("一共有下面这些情况:\n");
for(i=1;i<30;i++){
for(j=1;j<30;j++){
for(m=1;m<30;m++){
int n;
n = 3*i+2*j+m;
if(n%50==0&&(i+j+m)<=30){
printf("男人有%d个,女人有%d个,孩子有%d个\n",i,j,m); }
}
}
}
return 0;
}
输出:
一共有下面这些情况:
男人有1个,女人有18个,孩子有11个
男人有1个,女人有19个,孩子有9个
男人有1个,女人有20个,孩子有7个
男人有1个,女人有21个,孩子有5个
男人有1个,女人有22个,孩子有3个
男人有1个,女人有23个,孩子有1个
男人有2个,女人有16个,孩子有12个
男人有2个,女人有17个,孩子有10个
男人有2个,女人有18个,孩子有8个
男人有2个,女人有19个,孩子有6个
男人有2个,女人有20个,孩子有4个
男人有2个,女人有21个,孩子有2个
男人有3个,女人有14个,孩子有13个
男人有3个,女人有15个,孩子有11个
男人有3个,女人有16个,孩子有9个
男人有3个,女人有17个,孩子有7个
男人有3个,女人有18个,孩子有5个
男人有3个,女人有19个,孩子有3个
男人有3个,女人有20个,孩子有1个
男人有4个,女人有12个,孩子有14个
男人有4个,女人有13个,孩子有12个
男人有4个,女人有14个,孩子有10个
男人有4个,女人有15个,孩子有8个
男人有4个,女人有16个,孩子有6个
男人有4个,女人有17个,孩子有4个
男人有4个,女人有18个,孩子有2个
男人有5个,女人有10个,孩子有15个
男人有5个,女人有11个,孩子有13个
男人有5个,女人有12个,孩子有11个
男人有5个,女人有13个,孩子有9个
男人有5个,女人有14个,孩子有7个
男人有5个,女人有15个,孩子有5个
男人有5个,女人有16个,孩子有3个
男人有5个,女人有17个,孩子有1个
男人有6个,女人有8个,孩子有16个
男人有6个,女人有9个,孩子有14个
男人有6个,女人有10个,孩子有12个
男人有6个,女人有11个,孩子有10个
男人有6个,女人有12个,孩子有8个
男人有6个,女人有13个,孩子有6个
男人有6个,女人有14个,孩子有4个
男人有6个,女人有15个,孩子有2个
男人有7个,女人有6个,孩子有17个
男人有7个,女人有7个,孩子有15个
男人有7个,女人有8个,孩子有13个
男人有7个,女人有9个,孩子有11个
男人有7个,女人有10个,孩子有9个
男人有7个,女人有11个,孩子有7个
男人有7个,女人有12个,孩子有5个
男人有7个,女人有13个,孩子有3个
男人有7个,女人有14个,孩子有1个
男人有8个,女人有4个,孩子有18个
男人有8个,女人有5个,孩子有16个
男人有8个,女人有6个,孩子有14个
男人有8个,女人有7个,孩子有12个
男人有8个,女人有8个,孩子有10个
男人有8个,女人有9个,孩子有8个
男人有8个,女人有10个,孩子有6个
男人有8个,女人有11个,孩子有4个
男人有8个,女人有12个,孩子有2个
男人有9个,女人有2个,孩子有19个
男人有9个,女人有3个,孩子有17个
男人有9个,女人有4个,孩子有15个
男人有9个,女人有5个,孩子有13个
男人有9个,女人有6个,孩子有11个
男人有9个,女人有7个,孩子有9个
男人有9个,女人有8个,孩子有7个
男人有9个,女人有9个,孩子有5个
男人有9个,女人有10个,孩子有3个
男人有9个,女人有11个,孩子有1个
男人有10个,女人有1个,孩子有18个
男人有10个,女人有2个,孩子有16个
男人有10个,女人有3个,孩子有14个
男人有10个,女人有4个,孩子有12个
男人有10个,女人有5个,孩子有10个
男人有10个,女人有6个,孩子有8个
男人有10个,女人有7个,孩子有6个
男人有10个,女人有8个,孩子有4个
男人有10个,女人有9个,孩子有2个
男人有11个,女人有1个,孩子有15个
男人有11个,女人有2个,孩子有13个
男人有11个,女人有3个,孩子有11个
男人有11个,女人有4个,孩子有9个
男人有11个,女人有5个,孩子有7个
男人有11个,女人有6个,孩子有5个
男人有11个,女人有7个,孩子有3个
男人有11个,女人有8个,孩子有1个
男人有12个,女人有1个,孩子有12个
男人有12个,女人有2个,孩子有10个
男人有12个,女人有3个,孩子有8个
男人有12个,女人有4个,孩子有6个
男人有12个,女人有5个,孩子有4个
男人有12个,女人有6个,孩子有2个
男人有13个,女人有1个,孩子有9个
男人有13个,女人有2个,孩子有7个
男人有13个,女人有3个,孩子有5个
男人有13个,女人有4个,孩子有3个
男人有13个,女人有5个,孩子有1个
男人有14个,女人有1个,孩子有6个
男人有14个,女人有2个,孩子有4个
男人有14个,女人有3个,孩子有2个
男人有15个,女人有1个,孩子有3个
男人有15个,女人有2个,孩子有1个
比较愚笨,没有什么好的算法,这个计算量计算机时间不多,所以直接例举。(我这里用js写的)
console.log("求男人,女人,小孩数量");
var headCount; //总人数
var expendture; //总花费
for(var male = 0; male < 17; male++){
for(var female = 0; female < 25; female++){
for(var child = 1; child <= 50; child++){
expendture = male * 3 + female * 2 + child == 50;
headCount = male + female + child == 30;
if(headCount && expendture){
console.log("male:" + male + "\t" + "female:" + female + "\t" + "child:" + child + "\t");
}
}
}
}
运算结果:
male:0 female:20 child:10 hurmans.html:20:7
male:1 female:18 child:11 hurmans.html:20:7
male:2 female:16 child:12 hurmans.html:20:7
male:3 female:14 child:13 hurmans.html:20:7
male:4 female:12 child:14 hurmans.html:20:7
male:5 female:10 child:15 hurmans.html:20:7
male:6 female:8 child:16 hurmans.html:20:7
male:7 female:6 child:17 hurmans.html:20:7
male:8 female:4 child:18 hurmans.html:20:7
male:9 female:2 child:19 hurmans.html:20:7
male:10 female:0 child:20 hurmans.html:20:7
设男人为X人,女人为Y,小孩为Z
x+y+z=30
z=30-x-y
3x+2Y+z=50
z=50-3x-2y
50-3x-2y=30-x-y
50-30=3x+2y-x-y
20=2x+y
y=20-2x
----------
50-3x-(20-x)=30-x-(20-x)
50-3x-20+x=30-x-20+x
50-20-30+20=3x-x-x+x
20=2x
x=10.
---------
y=20-20=0
z=30-10=20
*/
public static void mks()
{
for(int x=0;x<=30;x++)
{
for(int y=0;y<=30;y++)
{
for(int z=0;z<=30;z++)
{
if(x+y+z==30 && 3*x+2*y+z==50)
System.out.println(x+","+y+","+z);
}
}
}
}
xyz分别代表男人 女人 小孩 答案如下
0,20,10
1,18,11
2,16,12
3,14,13
4,12,14
5,10,15
6,8,16
7,6,17
8,4,18
9,2,19
10,0,20