• 百钱百鸡问题


    题目描述:

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

    思路:

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

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

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

     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 }
  • 相关阅读:
    diff
    tar
    ln
    setfacl
    组件建站
    容器组件
    组件需求
    页面结构
    字体
    轮博图加元素动效的动效ransition
  • 原文地址:https://www.cnblogs.com/hanyu1995/p/13425725.html
Copyright © 2020-2023  润新知