原题:今有鸡兔同笼,上有三十五头,下有九十四足,问鸡兔各几何?
解题思路:
假如砍去每只鸡,每只兔一半的脚,那鸡兔的总脚数变成了94/2=47;
如果笼子里有一只兔子,那么脚的数量比头多一个。因此,兔的数量就是47-35=12,则鸡的数量就是35-12=23。
上述方法叫做化归法
下面我们用枚举法来写程序代码;
设鸡有i只,兔有j只
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<35;i++)
{
for(j=1;j<35;j++)
{
if((i+j==35)&&(2*i+4*j==94))
{
printf("鸡有%d只,兔有%d只\n",i,j);
}
}
}
return 0;
}
可是这样一来循环的次数就有点多了,下面我们改进效率
两只鸡和一只兔的叫数量是相等的,所以鸡的数量不超过三分之二,即i<25,j<13;
第二次循环可以改为从35-i开始
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<25;i++)
{
for(j=35-i;j<13;j++)
{
if((i+j==35)&&(2*i+4*j==94))
{
printf("鸡有%d只,兔有%d只\n",i,j);
}
}
}
return 0;
}