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 };