问题及代码:
/*
*文件名称:换分币
*作者:刘涛
完成日期:2016.3.12
*
*问题描述:用一元人民币兑换成1分,2分,5分硬币,有多少种换法?
*输入描述:无
程序输出:硬币的个数
*/
#include<iostream>
using namespace std;
int main()
{
int i,j,k;
for(i=0;i<=100;i++)
{
for(j=0;j<=50;j++)
{
for(k=0;k<=20;k++)
{
if(i+j*2+k*5==100)
{
cout<<"1分的有"<<i<<"个";
cout<<"2分的有"<<j<<"个";
cout<<"5分的有"<<k<<"个";
cout<<"\n";
}
}
}
}
return 0;
}
运行结果:
知识点总结:这是一种求解不定方程的题目,会牵扯到多层循环,采用对未知数的取值范围上穷举和组合。
学习心得:对于穷举法,我们需要进一步的考虑循环的条件,尽可能的精简程序,缩小内存。还需要考虑变量是否满足什么特定的关系,以来确定循环的条件。