鸡兔同笼

这是《孙子算经》中的一个问题。

今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?

初学者通常用穷举法来解这种问题。

即使是使用穷举法,也需要把程序编得具有通用性,比如说头或脚的数量变了程序也应该能够不用修改也能计算。

另外循环控制方面也应该尽可能的少。

鸡兔同笼_第1张图片

程序如下:

/* 鸡兔同笼,今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? */

#include <stdio.h>

#define MIN(x, y) (((x)>(y))?(y):(x))

#define HEADS 35
#define FOOT  94

int main(void)
{
    int i, j;
    for(i=0; i<=MIN(HEADS, FOOT/2); i++)
        for(j=0; j<=MIN(HEADS, FOOT/4); j++)
            if(i+j==HEADS && i*2+j*4 == FOOT)
                printf("chicken=%d, rabbit=%d\n", i, j);

    return 0;
}
程序运行结果如下:

chicken=23, rabbit=12


你可能感兴趣的:(鸡兔同笼)