把一张面值为一元的纸币,换成一分,二分,五分的硬币,共有多少种换法?编程输出每一种不同的换法。 如果每种硬币至少有一个,编程求出所需硬币最少的数目及换法。 #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; }