穷举法的经典应用,也是老生常谈了,不过里面进行了算法的优化,提高运行速度。
#include<stdio.h>
#include<stdlib.h>
int main() {
int nCock = 0;
int nHen = 0;
int nChicken = 0;
int cnt = 0;
for (nCock = 0; nCock <= 20; nCock++) {
for (nHen = 0; nHen <= (100-nCock) && nHen<=(100-nCock*5)/3; nHen++) {
/*for (nChicken = 0; nChicken <= (100-nCock- nHen) && nChicken<=(100-nCock*5-nHen*3)*3; nChicken++) {
if (nCock + nHen + nChicken == 100 && nCock * 5 + nHen * 3 + nChicken / 3 == 100 && nChicken%3==0) {
printf("公鸡:%d,母鸡:%d,小鸡;%d\n", nCock, nHen, nChicken);
cnt++;
}
}*/
nChicken = 100 - nCock - nHen;
if (nCock * 5 + nHen * 3 + nChicken / 3 == 100 && nChicken% 3 == 0) {
printf("公鸡:%d,母鸡:%d,小鸡;%d\n", nCock, nHen, nChicken);
cnt++;
}
}
}
printf("\n总共有%d买法\n", cnt);
system("pause");
return 0;
}
运行结果如图: