搬砖问题。一男人搬3块砖,一女人搬2块砖,2小孩搬1块砖。用n个人搬n块砖。
用枚举的思想。总人数men+women+children==n和3*men+2*women+0.5*children==n为判定条件,变量的取值范围[0,n].三个变量在各自的取值范围内遍历,采用三重循环嵌套。
//枚举
#include<stdio.h>
int main(void)
{
int n;
int men,women,children;
printf("Enter n:");
scanf("%d",&n);
int count=0;
for(men=0;men<=n;men++){
for(women=0;women<=n;women++){
for(children=0;children<=n;children++){
if((men+women+children==n)&&(3*men+2*women+0.5*children==n)){
printf("men=%d,women=%d,children=%d\n",men,women,children);
count++;
}
}
}
}
if(count==0){
printf("None!");
}
return 0;
}
为了提高效率,缩小men和women的范围
int limit_m;
int limit_w;
limit_m=n/3;
limit_w=n/2;
for(men=0;men<=limit_m;men++){
for(women=0;women<=limit_w;women++){
children=n-men-women;
if(men*3+women*2+children*0.5==n){
printf("men=%d,women=%d,children=%d\n",men,women,children);
count++;
}
}
}