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

来源:互联网 发布:山东大学威海网络充值 编辑:程序博客网 时间:2024/04/28 04:31

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

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

Code:
  1. #include<iostream>  
  2. #include<iomanip>  
  3. using namespace std;  
  4. struct coin  
  5. {  
  6.    int a;  
  7.    int b;  
  8.    int c;  
  9.    int num;  
  10. }coin[600],min;  
  11.   
  12. void main()  
  13. {  
  14.    int i,j,k,m=0;    
  15.    min.num=100;  
  16.    for(i=0;i<=20;i++)  
  17.    {  
  18.       for(j=0;j<=50;j++)  
  19.       {  
  20.          for(k=0;k<=100;k++)  
  21.          {  
  22.             if(i*5+j*2+k==100)  
  23.             {  
  24.               coin[m].a=i;  
  25.               coin[m].b=j;  
  26.               coin[m].c=k;  
  27.               coin[m].num=i+j+k;  
  28.               if(i!=0&&j!=0&&k!=0&&coin[m].num<min.num)  
  29.               {  
  30.                   min.a=i;  
  31.                   min.b=j;  
  32.                   min.c=k;  
  33.                   min.num=coin[m].num;  
  34.               }  
  35.               m++;  
  36.             }  
  37.          }  
  38.       }  
  39.    }  
  40.    j=0;  
  41.    for(i=0;i<m;i++)  
  42.    {  
  43.       cout<<setw(3)<<coin[i].a<<setw(3)<<coin[i].b<<setw(4)<<coin[i].c<<' ';   
  44.       j++;      
  45.       if(j%7==0)  
  46.       cout<<endl;  
  47.       if(j%21==0)  
  48.        cout<<endl;//分行显示  
  49.    }  
  50.    cout<<endl<<"共有"<<m<<"种换法"<<endl;  
  51.    cout<<"所需硬币最少的情况:"<<"1分"<<min.c<<"个"<<" 2分"<<min.b<<"个"<<" 5分"<<min.a<<"个共"<<min.num<<"个"<<endl;  
  52.   
  53. }  

        
  

  

原创粉丝点击