找零錢問題的貪心演算法(java描述)
問題描述:
當前有面值分別為2角5分,1角,5分,1分的硬幣,請給出找n分錢的最佳方案(要求找出的硬幣數目最少)
問題分析:
根據常識,我們到店裡買東西找錢時,老闆總是先給我們最大面值的,要是不夠再找面值小一點的,直到找滿為止。如果老闆都給你找分數的或者幾角的,那你肯定不幹,另外,他也可能沒有那麼多零碎的錢給你找。其實這就是一個典型的貪心選擇問題。
問題的演算法設計與實現:
先舉個例子,假如老闆要找給我99分錢,他有上面的面值分別為25,10,5,1的硬幣數,為了找給我最少的硬幣數,那麼他是不是該這樣找呢,先看看該找多少個25分的,誒99/25=3,好像是3個,要是4個的話,我們還得再給老闆一個1分的,我不幹,那麼老闆只能給我3個25分的拉,由於還少給我24,所以還得給我2個10分的和4個1分。
具體實現
相關推薦
找零錢問題的貪心演算法(java描述)
問題描述:當前有面值分別為2角5分,1角,5分,1分的硬幣,請給出找n分錢的最佳方案(要求找出的硬幣數目最少)問題分析:根據常識,我們到店裡買東西找錢時,老闆總是先給我們最大面值的,要是不夠再找面值小一點的,直到找滿為止。如果老闆都給你找分數的或者幾角的,那你肯定不幹,另外
資料結構與演算法(Java描述)-20、圖、圖的鄰接矩陣、有向圖的廣度優先遍歷與深度優先遍歷
一、圖的基本概念圖:是由結點集合及結點間的關係集合組成的一種資料結構。結點和邊:圖中的頂點稱作結點,圖中的第i個結點記做vi。有向圖: 在有向圖中,結點對<x ,y>是有序的,結點對<x,y>稱為從結點x到結點y的一條有向邊,因此,<x,y>與<y,x>是兩條不同的邊。有向圖
資料結構與演算法(Java描述)-15、稀疏矩陣以及稀疏矩陣的三元組實現
一、稀疏矩陣 對一個m×n的矩陣,設s為矩陣元素個數的總和,有s=m*n,設t為矩陣中非零元素個數的總和,滿足t<<s的矩陣稱作稀疏矩陣。符號“<<”讀作小於小於。簡單說,稀疏矩陣就是非零元素個數遠遠小於元素個數的矩陣。相對於稀疏矩陣來說,一個不稀疏的矩陣也稱作稠密矩陣。
資料結構與演算法分析-Java描述(2)-插入排序
插入排序有兩種演算法:直接插入排序和希爾排序 直接插入排序 原理:插入即表示將一個新的資料插入到一個有序陣列中,並繼續保持有序。 該排序演算法的外部迴圈為遍歷全部元素,內部迴圈為遍歷當前外部迴圈記錄元素的前面所有數字。 public static void inse
找零錢——貪心
bsp min 要求 不能 替換 spa font 枚舉 是否 找零錢? 有 100 元、50 元、20 元、10 元、5 元和 1 元這些面值的錢? 求湊出 ?? 元的最多張數和最少張數,要求第 ?? 種面值的錢不能用超過 ???? 張? 多組詢問,?? ≤ 10^5,
經典排序演算法(Java版)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
【筆記】大數乘法之Karatsuba演算法 (Java BigInteger原始碼)
BigInteger與uint[] 用uint[]來表示非負大數,其中陣列開頭是大數的最高32位,陣列結尾是大數最低32位。其與BigInteger的轉換方法 /// <summary> /// <see cref="uint"/>陣列轉為非負大整數 /// <
【筆記】大數乘法之古典演算法 (Java BigInteger原始碼)
BigInteger與uint[] 用uint[]來表示非負大數,其中陣列開頭是大數的最高32位,陣列結尾是大數最低32位。其與BigInteger的轉換方法 /// <summary> /// <see cref="uint"/>陣列轉為非負大整數 /// <
16 貪心演算法(筆記)
釋義 在設計演算法求解最優化問題的過程中,每一步都做出當時看起來最佳的選擇,這樣的演算法稱作貪心演算法,每一步做出的選擇稱作貪心選擇。 設計步驟 將最優化問題轉化為這樣的形式:對其做出一次選擇後,只剩下一個待求解的子問題。 證明做出貪心選擇後,原問題總是存在最優解,
ID生成器,Twitter的雪花演算法(Java)
/** * Twitter_Snowflake<br> * SnowFlake的結構如下(每部分用-分開):<br> * 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000
常用演算法(Java表述)
氣泡排序(Bubble Sort) 氣泡排序:一種交換排序,它的基本思想是:兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。穩定排序演算法 時間複雜度 O(n2),裡層迴圈每趟比較第 j 項和第 j+1項,如果前項大於後項,則發生交換。缺點是每次比較後都可能發生交換,
作業排程演算法(Java)
package Task03; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class App { private List<Integer> arr
貪心演算法(1)—— 活動安排問題 以及 電視節目問題 的區別
一、活動安排問題 #include <iostream> #include <algorithm> using namespace std; /* 題目型別:活動安排問題 特點:所有活動都需要進行,要求輸出所需的會場數 演算法:貪心演算法 注意
對稱矩陣與壓縮儲存演算法(java實現)
一、問題描述 實現一個對稱矩陣的壓縮儲存 二、演算法分析 對稱矩陣的特點:a[i][j] = a[j][i].即所有元素關於對角線對稱 所以可以將對稱矩陣的下三角儲存在一個數組物件SA中,儲存方式是, SA[0] = a[0][0] SA[1] = a[1][0]  
貪心演算法(上)
一、問題描述 有15個公司和30種產品。 每個公司生產不同種類任意多種產品,每個公司生成產品都會產生一定的費用。 例如: 需要生產6種產品,分別為 1 5 9 10 11 12 6 1 5 9 10 11 12 共有7個公司生產 7 第一家:需要15萬,生成5種產品,1 3 5
貪心演算法(2)
King’s Cake HDU 5640 http://acm.hdu.edu.cn/showproblem.php?pid=5640 It is the king’s birthday before the military parade . The ministers
貪心演算法(基於C++)
文章基於此篇微信推送https://mp.weixin.qq.com/s/3h9iqU4rdH3EIy5m6AzXsg 簡介 動態規劃是一種由問題的最小子狀態(邊界)不斷推出更大的狀態,最後解決整個問題的解題思想。 基礎概念 最優子結構:狀態可被分解為的子狀態
實現奇偶數排序演算法(JAVA實現)
給定一個整數陣列,請調整陣列的順序,使得所有奇數位於陣列前半部分,所有偶數位於陣列後半部分,時間複雜度越小越好。 package com.sort; import java.util.Arrays; public class TestSort { /** * 測試方法 * @par
基礎演算法——貪心演算法(聖誕老人的禮物)
題目是這樣的: 聖誕節來臨了,中聖誕老人準備分發糖果現在有多箱不同的糖果, 每箱糖果有自己的價值和重量,每箱糖果都可以拆分成任意散裝組合帶走。聖誕老人的馴鹿雪橇最多隻能裝下重量W的糖果,請問聖誕老人最多能帶走多大價值的糖果。 4表示四種糖果,下面跟著四行資料,第一個表示價值,第二個