100元钱买100只鸡,母鸡每只5元,公鸡每只3元,小鸡3只1元,问共可以买多少只母鸡、多少只公鸡、多少只小鸡?
编程实现,给出不同方法的算法时间复杂度并进行分析。
#include
int main()
{
int x,y,z; //x公鸡数,y母鸡数,z小鸡数
for(x=1;x<=20;x++) //100最多买20公鸡
for(y=1;y<=34;y++) //100最多买34母鸡
for(z=1;z<=100;z++) //最多只能有100小鸡
if(x+y+z==100&&5*x+3*y+z/3==100&&z%3==0)
{
printf("公鸡为:%d\t",x);
printf("母鸡为:%d\t",y);
printf("小鸡为:%d\t\n",z);
}
while(1);
return 0;
}
按你这情况是正好花完,也就是平均下来一只鸡1元
必须买小鸡
买一只公鸡,需要再买3只小鸡,4元4只
买一只母鸡,需要再买6只小鸡,7元7只
只需算4和7组合成100的种数
i母鸡 j公鸡 k一捆小鸡
int i,j,k
for(i=0;i<=14;i++){
j=100-4*i
if(j%7==0){
k=(i+j)*3;
break;
}
}
需要注意的是,这种解法只适合正好把钱花完,题目中没有说必须把钱花完,可能不需要100元,那就需要另算