学c的sjj 发表于 2020-10-27 21:09:29

各位大佬可以用穷举法来解决吗。其他方法也是可以的。

小明所住的小区有三个户型,分别是三室一厅,四室一厅和五室两厅。
小明在散步的时候绕着一栋小区内的房子走了一圈,数了数这栋楼的窗户数量。
假设一室,一厅都有一扇窗户,即三室一厅有四扇窗户,五室两厅有七扇窗户。
现请你根据小明所数的窗户数量来判断这栋楼不同的户型各有多少个,如果有多种情况,只需输出一种。
使用一个t变量来设置输出例程的数量,例如t=2,则需要输入两次窗户的数量以及他们分别户型数量输出。

xieglt 发表于 2020-10-28 09:27:38

/*
根据题意,可得方程: 4x + 5y + 7z = a
x:三室一厅
y:四室一厅
z:五室二厅
a:窗户总数
其中 x,y,z 为大于0的整数

一个方程三个未知数,只能用穷举法了。
*/

#include<stdio.h>


int main()
{
        int num;
        int x,y,z;
        int sum = 0;
       
        printf("请输入窗户数量:");
        scanf("%d",&num);

        if(num < (4 +5 + 7))
        {
                printf("Input error!");
                return 0;
        }

        for(x = 1 ; x < num/4 ; x++)
        {
                for(y = 1 ; y < num/5 ; y++)
                {
                        for(z = 1 ; z < num/7 ; z++)
                        {
                                sum = 4 * x + 5 * y + 7 * z;
                                if(sum == num)
                                {
                                        printf("三室一厅:%d,四室一厅:%d,五室二厅:%d",x,y,z);
                                        return 0;
                                }
                        }
                }
        }

        printf("Input error!");

        return 0;
}
页: [1]
查看完整版本: 各位大佬可以用穷举法来解决吗。其他方法也是可以的。