钱币找零问题-贪心算法解析

cpp 复制代码
#include <iostream> 

using namespace std;

#define N  7 

int counts[N] = { 3, 2, 0, 3 ,2 ,0 , 1 };
int value[N] = { 1, 2, 5, 10, 20, 50, 100 }; 
int cot[N] = { 0, 0, 0, 0 ,0 ,0 , 0 };

int solve(int money) {
	int num = 0; //支付了几张纸币
	int i = 0;

	for (i = N - 1; i >= 0; i--) {
		int j = money / value[i]; //对应的纸币要给几张
		//有这么多给对应的钱,没有那些有多少给多少
		int c = j > counts[i] ? counts[i] : j; 

		cout << "需要面值" << value[i] << "的纸币" << c << "张" << endl;
		money -= c * value[i]; //还剩多少要给
		num += c; 

		if (money == 0) { break; }
	}
	if (money > 0) { num = -1; } //不能完全支付

	return num;
}

int main() {
	int money = 0;
	int num = 0;

	cout << "请输入要支付的数目:\n";
	cin >> money;

	num = solve(money);

	if (num == -1) {
		cout << "支付失败!" << endl;
	}
	else {
		cout << "成功支付款项:" << num << endl;
	}

	system("pause");
	return 0;
}
相关推荐
DeepModel13 小时前
【统计检验】方差分析(ANOVA)
算法
sz-lcw13 小时前
HOG特征向量计算方法
人工智能·python·算法
闻缺陷则喜何志丹13 小时前
【博弈论】P8144 [JRKSJ R4] BBWWBB|普及+
c++·算法·洛谷·博弈论
l1t13 小时前
Qwen 3.5plus一步做对的欧拉计划701题
算法·动态规划·欧拉计划
Book思议-13 小时前
【数据结构实战】链表找环入口的经典问题:快慢指针法
c语言·数据结构·算法·链表
tankeven13 小时前
HJ135 计树
c++·算法
㓗冽13 小时前
时间转换-进阶题12
c++·算法
不知名。。。。。。。。13 小时前
仿muduo库实现高并发---请求HttpRequest模块 响应HttpResponse模块
服务器·c++
炽烈小老头14 小时前
【 每天学习一点算法 2026/03/19】子集
学习·算法
我能坚持多久14 小时前
【初阶数据结构11】——链式二叉树知识补充
数据结构·算法