任务代码:
问题1:
传统求解穷举方法(局限性:计算次数太多,程序运行耗时总共计算21*34*301次)
#include <stdio.h>
int main()
{
printf("解决问题:公鸡5元一只,母鸡3元一只,小鸡1元三只,问100元买100只鸡能买公鸡,母鸡,小鸡多少?(提供所有方案)\n\n");
int cock,hen,chick;
float price;
for(cock=0;cock<=20;cock++)//公鸡最多能有20只
{
for(hen=0;hen<=33;hen++)//母鸡最多有33只
{
for(chick=0;chick<=100;chick++)//小鸡最多100只
{
if(cock*5+hen*3+chick/3==100&&cock+hen+chick==100&&chick%3==0)//小鸡1/3元一只且要被3除尽,小鸡只能以3只3只的买,也就是说钱最小单位1元不可能有1/3元!!!
{ printf("公鸡:%d 母鸡:%d 小鸡:%d\n",cock,hen,chick);}
}
}
}
return 0;
}
问题改进:
#include <stdio.h>
int main()
{
printf("解决问题:公鸡5元一只,母鸡3元一只,小鸡1元三只,问100元买100只鸡能买公鸡,母鸡,小鸡多少?(提供所有方案)\n\n");
int cock,hen,chick;
float price;
for(cock=0;cock<=20;cock++)//公鸡最多能有20只
{
for(hen=0;hen<=33;hen++)//母鸡最多有33只
{
chick=100-cock-hen;//简化小鸡的计算循环
if(cock*5+hen*3+chick/3==100 && chick%3==0)//小鸡1/3元一只且要被3除尽,小鸡只能以3只