#include "iostream"
#include "fstream"
using namespace std;
/*
最大面值优先
*/
int coins[6];
int greedy(double money)
{
cout << "找钱时用到的钱币有:";
int m[] = {200, 100, 50, 20, 10, 5}; //硬币面值,单位为分
money = (int)(money * 100); //将元换为分
int i, j;
int count = 0;
for(i=0; i<6; i++) //硬币种数
for(j=1; j<=coins[i]; j++) //每种硬币的数量
if(money >= m[i])
{
money -= m[i];
cout << " " << m[i];
count++;
if(money == 0)
return count;
}
return -1;
}
int main()
{
ifstream fin("硬币找钱.txt");
int i;
double money;
while(!fin.eof())
{
memset(coins, 0, sizeof(coins));
cout << " 5\t10\t20\t50\t100\t200\n";
cout << "输入各种面值的硬币个数:";
for(i=0; i<6; i++)
{
fin >> coins[5-i];
cout << coins[5-i] << "\t";
}
cout << "\n输入要找的钱数:";
fin >> money; cout << money*100 << endl;
cout << "\n最少的硬币数为:" << greedy(money);
cout << endl;
}
fin.close();
return 0;
}
硬币找钱问题1
最新推荐文章于 2022-11-09 15:50:15 发布