百钱买百鸡
共计3元一只,母鸡5元一只,小鸡1元三只,一百元买一百只鸡。请写出公鸡、母鸡、小鸡的数目。
【分析】
假设公鸡数为cock、母鸡数为hen、小鸡数为chick,得到两个关系,cock+hen+chick=100,3*cock+5*hen+chick/3=100
可以采用枚举法不难得到cock的范围[0,33],hen的范围[0,20]。
code:
#include<stdio.h>
const int COCKPRICE = 3; /*一只公鸡的价格*/
const int HENPRICE = 5; /*一只母鸡的价格*/
const int CHICKS = 3; /*一元钱能买的小鸡数量*/
void Scheme(int money, int chooks);/*计算并输出购买方案*/
void main()
{
int money = 100;/*钱的总数*/
int chooks = 100;/*鸡的总数*/
printf("购买方案如下:\n");
Scheme(money, chooks);/*计算并输出购买方案*/
getchar();
}
void Scheme(int money, int chooks)
/*计算并输出购买方案*/
{
int maxCock = money / COCKPRICE;
int maxHen = money / HENPRICE;
int maxChick = chooks;
int cock, hen, chick;
for (cock = 0; cock < maxCock; ++cock)/*枚举公鸡的可能数量*/
{
for (hen = 0; hen < maxHen; hen++)/*枚举母鸡的可能数量*/
{
for (chick = 0; chick < maxChick; chick++)/*枚举小鸡的可能数量*/
{
/*约束条件*/
if (0 == chick%CHICKS && cock + hen + chick == chooks
&& COCKPRICE*cock + HENPRICE*hen + chick / CHICKS == money)
{
printf("公鸡: %2d, 母鸡: %2d, 小鸡: %2d\n", cock, hen, chick);
}
}
}
}
}
结果: