百钱百鸡问题

题目描述:

中国古代数学家张丘建在他的《算经》中提出了“百钱百鸡”问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,鸡翁、鸡母、鸡雏各几何?

思路:

计算机解决此类问题采用的是“穷举法”。

穷举法的基本原理是,根据已知条件,在给定的范围内对所有可能的答案按某种顺序进行逐一枚举和检验,从中找出那些符合要求的答案。

穷举法的关键是列举所有可能的情况并进行条件判断,可以用循环结构来实现。

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int x = 0, y = 0, z = 0, j=1;    // x, y, z 分别表示公鸡cock、母鸡hen、和鸡仔chicken个数
 6     
 7     for (int x = 0; x <= 100; x++)
 8     {
 9         for (int y = 0; y <= 100; y++)
10         {
11             for (int z = 0; z <= 100; z++)
12             {
13                 if (x + y + z == 100 && 5 * x + 3 * y + z / 3 == 100)
14                 {
15                     printf("解%d:公鸡个数为:%d,母鸡个数为:%d,鸡仔个数为:%d
", j++, x, y, z);
16                 }
17             }
18         }
19     }
20     return 0;
21 }

Note:如果要把 x+y+z 和 5*x+3*y+z/3 这两个表达式赋值给变量,要在最内层循环内部进行赋值。

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int x = 0, y = 0, z = 0, j = 1;    // x, y, z 分别表示公鸡cock、母鸡hen、和鸡仔chicken个数
 6     int sum, chick;
 7     for (int x = 0; x <= 100; x++)
 8     {
 9         for (int y = 0; y <= 100; y++)
10         {
11             for (int z = 0; z <= 100; z++)
12             {
13                 sum = x + y + z;
14                 chick = 5 * x + 3 * y + z / 3;
15                 if ( sum == 100 &&  chick == 100)
16                 {
17                     printf("解%d:公鸡个数为:%d,母鸡个数为:%d,鸡仔个数为:%d
", j++, x, y, z);
18                 }
19             }
20         }
21     }
22     return 0;
23 }
原文地址:https://www.cnblogs.com/hanyu1995/p/13425725.html