例题1,鸡兔同笼
/************************************
***** 穷举法之鸡兔同笼 *****
*************************************/
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d;
cout<<"鸡兔同笼36,共计100足,问鸡兔各几何?"<<endl;
cout<<"解:设鸡为x,兔为y。"<<endl;
cout<<"可得方程为:2x+4y=100,x+y=36"<<endl;
cout<<"即方程的解为:"<<endl;
for(a=0;a<=25;a++)
for(b=0;b<=36;b++)
{
d=a+b;
if(d==36)
{
c=4*a+2*b;
if(c==100)
{
cout<<"鸡的只数为:x="<<b<<endl;
cout<<"兔的只数为:y="<<a<<endl;
}
}
}
return 0;
}
程序运行结果
例题2 找零钱
/************************************
***** 穷举法之换钱 ****
*************************************/
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,i=1;
cout<<"朋友给你一元钱,叫你给他换一些零钱,给出你有多少种换法?"<<endl;
cout<<"解:设一毛钱为x,两毛钱为y,五毛钱为z"<<endl;
cout<<"可得方程为:x+2y+5z=10"<<endl;
cout<<"即方程的解为:"<<endl;
for(a=0;a<=10;a++)
for(b=0;b<=5;b++)
for(c=0;c<=2;c++)
{
d=a+2*b+5*c;
if(d==10)
{
cout<<"第"<<i<<"种换法"<<endl;
cout<<"一毛钱共"<<a<<"张"<<endl;
cout<<"两毛钱共"<<b<<"张"<<endl;
cout<<"五毛钱共"<<c<<"张"<<endl;
i++;
cout<<endl;
}
}
return 0;
}
程序运行结果
例5:小斌有一个QQ帐号密码是一个5位数。但因长时间没使用了,他将密码给忘了。但小斌生日是8月1日出生,而爸爸的生日则是9月1日,小斌记得是把同时是8l和9l的倍数用作密码,还记得这个密码的中间一位(百位数)是l。你能设计一个程序帮他找回这个密码吗?
/************************************
***** 穷举法之找回密码 *****
*************************************/
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,i,j,n;
cout<<"QQ帐号密码是一个5位数,同时是8l和9l的倍数用作密码,且密码的百位数是1"<<endl;
for(a=124;a*81<100000;a++)
for(b=110;b*91<100000;b++)
{
i=a*81;
j=b*91;
if(i==j)
{
c=i/100;
n=1;
while(c-10*n>10)
n++;
d=c-10*n;
if(d==1)
cout<<"密码为:"<<i<<endl;
}
}
return 0;
}
程序运行结果