第6章 函数 第8题

题目:

输入一个金额,用100、50、20、10、5、1进行换算。

(不一定是这几张面额、而且这几张面额的数量也可以有限制。

为了简化问题,这里选取了人民币的面额,以及默认每种面额都没有数量限制)


代码:


1.贪心算法

//输入一个金额,用100、50、20、10、5、1进行换算

#include <iostream>
using namespace std;
int main()
{
	cout << "输入一个金额,用100、50、20、10、5、1进行换算" << endl << endl;

	int money, number[6] = { 0 };

	cout << "请输入一个金额:";
	cin >> money;

	int tmp = money, j = 0;
	/*tmp用于存money的值,因为最后输出时要用到money,
	但money的值在中间步骤中已作为了循环的一部分而改变了*/

	for (int i : {100, 50, 20, 10, 5, 1})
	{
		if (tmp / i != 0)
		{
			number[j] = tmp / i;
			tmp = tmp - (tmp / i) * i;
		}

		j = j + 1;   //每一次进入循环都换了一种货币
	}

	j = 0;   //重置j=0
	cout << endl << money << "元等价于";
	for (int i : {100, 50, 20, 10, 5, 1})
	{
		if (number[j] == 0) goto number0;   //不输出无用的数量0

		if (j == 5) cout << number[j] << "张" << i << "元";
		else cout << number[j] << "张" << i << "元、";
	
	number0:
		j = j + 1;   //每一次进入循环都换了一种货币
	}
	cout << endl << endl;
	
	system("pause");
	return 0;
}


2.动态规划

猜你喜欢

转载自blog.csdn.net/weixin_41013202/article/details/79772100