【题目描述】
有人有一百块钱,打算买一百只鸡,公鸡一只5元,母鸡一只3元,小鸡3只1元,求各应买多少?
【题目解析】
方法一:数学方法求解,即设方程求解(我第一反应就是这种方法,主要是实在是太像鸡兔同笼问题了,但变量与方程数量不符,难以求出具体解,最后还是要用到穷举法)
方法二:循环穷举法
#include<iostream>
using namespace std;
int main()
{
int x,y,z;
for(x=0;x<20;x++) //使每种鸡数量均为正数,则每种均有最大购买数
{
for(y=0;y<33;y++)
{
z=100-x-y; //用x,y表示z,减少循环量 不用再限定z>0,通过循环条件可得x+y<100
if(z%3==0;5*x+3*y+z/3==0) //小鸡数量应为3的倍数
cout<<"公鸡:"<<x<<"母鸡:"<<y<"小鸡:"<<z<<endl;
}
}
return 0;
}
【总结】
题目及其简单,只是一个循环的初级嵌套,这里需要注意的是变量的限定(最大购买量、小鸡3只组合卖出),在实际问题中往往都需要考虑变量的隐含限制(如:变量>0、需要为整数等)