C语言成长之路34:百鸡百钱问题

声明:本笔记基于 B站UP主「来自程序员的暴击」的 「C语言成长之路」中对应课程;


     *  穷举法
     *  100元去买鸡,公鸡5元一只,母鸡3元一只,小鸡3毛一只;
     *  100元能分别买公鸡母鸡小鸡各多少只?

这一课主要是算法基础,入门级的思维练习,直接上代码!

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <limits.h>
 4 #include <Windows.h>
 5 
 6 
 7 void main(){
 8     /*  C语言成长之路34:百鸡百钱问题
 9      *  穷举法
10      *  100元去买鸡,公鸡5元一只,母鸡3元一只,小鸡3毛一只;
11      *  100元能分别买公鸡母鸡小鸡各多少只?
12      *  设公鸡X只,母鸡为Y只,小鸡为z只
13      *  x + y + z = 100;
14      *  5x + 3y + z/3 = 100
15      */
16     for (int x = 0; x <= 20; x++){
17         for (int y = 0; y <= 33; y++){
18             for (int z = 0; z <= 100; z++){
19                 if ((5 * x + 3 * y + z/3.0 == 100) && (x + y + z == 100)){
20                     printf("x = %d,y = %d,z = %d\n",x,y,z);
21                 }
22             }
23         }
24     }
25     /*  换个思路
26      *  设公鸡X只,母鸡为Y只,那么小鸡就是(100 - x - y)只
27      *  少了一层循环,代码运行速度更快了
28      */
29     for (int x = 0; x <= 20; x++){
30         for (int y = 0; y <= 33; y++){
31             int z = 100 - x - y;
32             if (5*x + 3 * y + z / 3.0 == 100){
33                 printf("x = %d,y = %d,z = %d\n",x,y,z);
34             }
35         }
36     }
37 };

 

posted @ 2020-07-27 21:02  Akne  阅读(309)  评论(0编辑  收藏  举报