c++ 贪心法构造货币统计问题
问题描述:
问题描述:
某单位为每个员工发工资(精确到元),为了保证不要临时兑换零钱, 且取款的张数最少,取工资前要统计出所有职工的工资所需各种币值(100,50,20,10,5,2,1元共七种)的张数。
例如:
输入:1020
输出:100元10张,20元1张
#include <iostream>
using namespace std;
int a[]={100,50,20,10,5,2,1};//记录钱的种类
int b[7]={0};//记录每种面额的张数
void salary(int x){//计算函数
int k=0;//定义临时存储变量
for(int i=0;i<sizeof(a)/sizeof(a[0]);i++){//对每种面额进行计算
k=x/a[i];
b[i]+=k;
x=x-a[i]*k;
}
}
int main() {
int n;
cout<<"请输入员工人数:";
cin>>n;
cout<<"请输入每位员工的工资:";
int x[n];
for(int i=0;i<n;i++){
cin>>x[i];
}
for(int i=0;i<n;i++){
salary(x[i]);
}
for(int i=0;i<sizeof(b)/sizeof(b[0]);i++){
cout<<a[i]<<"元面额的有"<<b[i]<<"张"<<endl;
}
return 0;
}