无思路啊,,怎么破,,

用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);
            }
        }
    }
}