您的位置:首页 > 编程语言

把一张面值为一元的纸币,换成一分,二分,五分的硬币,共有多少种换法?编程输出每一种不同的换法。 如果每种硬币至少有一个,编程求出所需硬币最少的数目及换法。

2010-10-22 13:29 441 查看

[b]把一张面值为一元的纸币,换成一分,二分,五分的硬币,共有多少种换法?编程输出每一种不同的换法。


如果每种硬币至少有一个,编程求出所需硬币最少的数目及换法

#include<iostream>
#include<iomanip>
using namespace std;
struct coin
{
int a;
int b;
int c;
int num;
}coin[600],min;
void main()
{
int i,j,k,m=0;
min.num=100;
for(i=0;i<=20;i++)
{
for(j=0;j<=50;j++)
{
for(k=0;k<=100;k++)
{
if(i*5+j*2+k==100)
{
coin[m].a=i;
coin[m].b=j;
coin[m].c=k;
coin[m].num=i+j+k;
if(i!=0&&j!=0&&k!=0&&coin[m].num<min.num)
{
min.a=i;
min.b=j;
min.c=k;
min.num=coin[m].num;
}
m++;
}
}
}
}
j=0;
for(i=0;i<m;i++)
{
cout<<setw(3)<<coin[i].a<<setw(3)<<coin[i].b<<setw(4)<<coin[i].c<<' ';
j++;
if(j%7==0)
cout<<endl;
if(j%21==0)
cout<<endl;//分行显示
}
cout<<endl<<"共有"<<m<<"种换法"<<endl;
cout<<"所需硬币最少的情况:"<<"1分"<<min.c<<"个"<<" 2分"<<min.b<<"个"<<" 5分"<<min.a<<"个共"<<min.num<<"个"<<endl;
}


[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐