枚举算法2——百钱买百鸡

百钱买百鸡
共计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);
				}
			}
		}
	}
}

结果:

猜你喜欢

转载自blog.csdn.net/baidu_36669549/article/details/104151938
今日推荐