用30人包括男人,女人和孩子,在一家饭馆用餐,总共消费50美元,其中每个男人个消费3美元,每个女人消费2美元,每个小孩个消费1美元,请问男人女人和孩子各消费多少美元?
循环暴力破解,用多个答案:
#include <stdio.h>
int main()
{
for(int i=1;i<30;i++)
for(int j=1;j<30;j++)
for(int k=1;k<30;k++)
if (i*3+j*2+k==50 && i+j+k==30){
printf("男人女人和孩子各消费:%d、%d和%d美元。\n",i*3,j*2,k);
//printf("男人女人和孩子人数各:%d、%d和%d人。\n",i,j,k);
}
printf("\n");
//或者用2个变量
for(int i=1;i<30;i++)
for(int j=1;j<30;j++)
if (i*3+j*2+(30-i-j)==50){
printf("男人女人和孩子各消费:%d、%d和%d美元。\n",i*3,j*2,30-i-j);
//printf("男人女人和孩子人数各:%d、%d和%d人。\n",i,j,30-i-j);
}
return 0;
}
求人数再用后一句printf()
你可以先去了解动态规划算法
假设有a个男人,b个女人,c个小孩
可得ax3+bx2+cx1=50
然后你列个3重for循环,看什么样的组合能实现这个等式呗
for (int i = 0; i <= 30; i++) {
for (int j = 0; j <= 30 - i; j++) {
for (int k = 0; k <= 30 - i - j; k++) {
if (3 * i + 2 * j + k == 50) {
printf("%d, %d, %d\n", 3 * i, 2 * j, k);
}
}
}
}