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

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;
}
相关推荐
Howrun7775 小时前
虚幻引擎_AController_APlayerController_AAIController
开发语言·c++·游戏引擎·虚幻
小林rr5 小时前
深入探索 C++:现代特性、工程实践与性能优化全解
java·c++·性能优化
Xの哲學5 小时前
Linux 软中断深度剖析: 从设计思想到实战调试
linux·网络·算法·架构·边缘计算
暴风游侠5 小时前
如何进行科学的分类
笔记·算法·分类
羊小猪~~5 小时前
【QT】-- QT基础类
开发语言·c++·后端·stm32·单片机·qt
leaves falling6 小时前
冒泡排序(基础版+通用版)
数据结构·算法·排序算法
C雨后彩虹6 小时前
无向图染色
java·数据结构·算法·华为·面试
坚持就完事了6 小时前
扫描线算法
算法
努力写代码的熊大6 小时前
深入探索C++关联容器:Set、Map、Multiset与Multimap的终极指南及底层实现剖析
开发语言·c++
鱼跃鹰飞6 小时前
Leetcode尊享面试100题:252. 会议室
算法·leetcode·面试