一 . 问题描述
一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在百钱买百鸡,请问,公鸡,母鸡,小鸡各多少只?
二. 问题分析
三个变量 cock ,hen,chicken
1> cock+hen+chicken=100;
2> cock*5+hen*3+chicken/3=100;
三. 算法设计
采用穷举法 cock<=20,hen<33,chicken<=100
#include <stdio.h>
//方式一:穷举法
//效率地 ,要循环21X34X101=72114次;
#if 0
int main(int argc,constchar * argv[]) {
// insert code here...
printf("Hello, World!\n");
int cock,hen,chicken;
for (cock=0; cock<=20;cock++)
{
static int i=0;
for (hen=0; hen<=33; hen++)
{
for (chicken=0; chicken<=100; chicken++)
{
if ((5*cock+hen*3+chicken/3==100)&&(cock+hen+chicken==100))
{
printf("cock=%2d,hen=%2d,chicken=%2d",cock,hen,chicken);
}
i++;
printf("i=%d",i);
}
}
}
return 0;
}
#endif
//方式二:
int main(int argc,constchar * argv[]) {
// insert code here...
printf("Hello, World!\n");
int cock,hen,chicken;
for (cock=0; cock<=20;cock++)
{
static int i=0;
for (hen=0; hen<=33; hen++)
{
//在外层循环的条件下,在chichen的数量加以限制
//循环执行的次数为21X34=714;效率提高了不少
chicken=100-hen-cock;
if (5*cock+hen*3+chicken/3==100)
{
//printf("cock=%2d,hen=%2d,chicken=%2d",cock,hen,chicken);
}
i++;
printf("i=%d",i);
}
}
return 0;
}
void BuyChicken(int m,int n){
for(int x=0;x<=n;x++){
for(int y=0;y<=n;y++){
int z=n-x-y;
if(z>0&&z%3&&x*5+y*3+z/3==m){
printf("公鸡 %d,母鸡 %d,小鸡 %d",x,y,z);
}else{
}
}
}
}