编程算法之硬币问题 代码(C)

题目: 有1, 5, 10, 50, 100, 500元硬币各若干枚, 现在要用这些硬币来支付A元, 最少需要多少枚硬币?

假定本题至少存在一种支付方案.

使用贪心算法, 优先选用最大的硬币, 并不断的调整硬币的数量.

代码:

/*
 * main.cpp
 *
 *  Created on: 2014.7.17
 *      Author: spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <stdio.h>
#include <limits.h>  

#include <utility>
#include <queue>  

using namespace std;  

class Program {
    const int V[6] = {1, 5, 10, 50, 100, 500};
    int C[6] = {3, 2, 1, 3, 0, 2};
    int A = 620;  

public:
    void solve() {
        int ans = 0;
        for (int i=5; i>=0; i--) {
            int t = min(A/V[i], C[i]);
            A -= t*V[i];
            ans += t;
        }
        printf("result = %d\n", ans);
    }
};  

int main(void)
{
    Program P;
    P.solve();
    return 0;
}

输出:

result = 6

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

作者:csdn博客 Mystra

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, int
, 支付
, include
, 代码
, 贪心算法
, 算法 编程
, 贪心算法的题目
, program
编程算法
贪心算法硬币找钱问题、最少硬币问题算法、假硬币问题算法、贪心算法背包问题代码、旅行商问题算法代码,以便于您获取更多的相关知识。

时间: 2024-09-19 03:50:35

编程算法之硬币问题 代码(C)的相关文章

c语言-编程算法 - 最小的k个数 代码(C)

问题描述 编程算法 - 最小的k个数 代码(C) 请解释一下在c语言中怎样编写在输入的N个数中找到k个最小的数 解决方案 排序吧,再输出前k个数 解决方案二: 遍历,找出MAX,移除MAX,循环K遍 解决方案三: 我觉得你的问题是怎么将输入的数保存下来,你可以先定义一个vector. vector vec;int iNUm = 0;while(cin>>iNum)//需要结束的时候输入ctrl+z;{ vec.push_back(iNum);}//最后对整个vec进行排序,取得最小的值 解决方

代码-C++编程 算法 求助!!!

问题描述 C++编程 算法 求助!!! 在一篇英文文章中,输入一个字母,请输出与该字母一起出现频率最高的三个字母.如:输入s,可能和s一起出现频率最高的就是t,e.....想知道算法!!!如果可以,可以给个代码作为参考吗?非常谢谢 解决方案 之前回答过你的问题.和计算出现频率最高的字母其实类似,只不过那个只需要一个向量保存结果,这个需要一个矩阵,保存字母转移关系.最后统计输出.要代码,请采纳. 解决方案二: 我的想法是这样: 建立一个代表字母的数组a[300],比如a[A]表示A出现的次数. 那

《数学与泛型编程:高效编程的奥秘》一3.3 实现该算法并优化其代码

3.3 实现该算法并优化其代码 一开始我们可能认为要用两个数组才能实现该算法,其中一个数组保存有待筛选的数字,另一个数组保存对应的Boolean标志,用以表示相应的数字有没有划掉.然而只要稍微思考一下就会发现,我们实际上不需要存储有待筛选的数字.因为其中的大多数值(也就是那些非素数)根本用不到.如果确实需要用到某个值,那我们可以根据它的位置来计算.由于首个值是3,而且后一个值比前一个值大2,因此第i个值就是2i + 3.于是,只需要把筛选过程中用到的Boolean标志保存下来就可以了,我们用tr

c++-C++编程 算法 求助!!!

问题描述 C++编程 算法 求助!!! C++编程 算法 求助!!! c++代码编程出现频率 在一篇英文文章中,输入一个字母,请输出与该字母一起出现频率最高的三个字母. 如:输入s,可能和s一起出现频率最高的就是t,e..... 想知道算法!!!如果可以,可以给个代码作为参考吗?非常谢谢 解决方案 没问题,采纳了就写给你. 解决方案二: 求一篇英文文章中各个字母出现的频率,不区分大小写. 思路: (1)首先定义一个数组freArray= new int[26],存放每个单词的出现频率. (2)读

求 python用遗传编程解决符号回归的代码?如:cos2x表示成一个固定的式子 求代码

问题描述 求 python用遗传编程解决符号回归的代码?如:cos2x表示成一个固定的式子 求代码 求 python用遗传编程解决符号回归的代码?如:cos2x表示成一个固定的式子 求源代码

链表-求助Java算法,这两个算法问题有Java代码实现

问题描述 求助Java算法,这两个算法问题有Java代码实现 从N个元素集合里面随机抽取M个元素(M<N). C/C++: void randomChoose(int*data, intn, int *result, int m); Java: void randomChoose(int data[], int result[]); 说明: 1.Data是待抽取的元素集合,n是data的长度,result是抽取的结果,m是结果集的长度. 2.同一个元素不能被反复抽取. 3.每个元素被抽取到的概率

源代码-Q学习算法怎样用C++代码实现呢??

问题描述 Q学习算法怎样用C++代码实现呢?? Q学习算法怎样用C++代码实现呢??可以执行的源代码,,谢谢了,,技术小白 解决方案 RSA算法介绍及JAVA实现,其实java和c++差不多,参考一下吧 <一>基础 RSA算法非常简单,概述如下: 找两素数p和q 取n=p*q 取t=(p-1)*(q-1) 取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1) 取d*e%t==1 这样最终得到三个数: n d e 设消息为数M (M <n) 设c=(M**d)%n就得到

十大编程算法助程序员走上大神之路

十大编程算法助程序员走上大神之路 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤:

Android编程之分辨率处理相关代码段合集_Android

本文实例讲述了Android编程之分辨率处理相关代码段.分享给大家供大家参考,具体如下: 1. 通常我们所说的屏幕分辨率如800x480.960x540等.这些分辨率是可以通过代码获取到的.手机屏幕分辨率计算: // 计算手机屏幕分辨率 private void computeDisplayMetrics() { // 手机屏幕分辨率为heightxwidth DisplayMetrics dm = new DisplayMetrics(); this.getWindowManager().ge