找零錢——貪心
找零錢
? 有 100 元、50 元、20 元、10 元、5 元和 1 元這些面值的錢
? 求湊出 ?? 元的最多張數和最少張數,要求第 ?? 種面值的錢不能用
超過 ???? 張
? 多組詢問,?? ≤ 10^5, ????, ?? ≤ 10^9
題解:
其實我們只要知道最少張數即可。
最大=湊出∑ai-x的最小方案數。max=n-min
發現,如果沒有20,那麽剩下的100/50/10/5/1成倍數關系可以直接貪心
如果有了20怎麽辦?
那麽,20能用幾張呢?
是否可以被50替換呢?
50*2=20*5
所以,如果最終的方案中,用了至少5張20,還剩下至少兩張50,那麽這一定不是最優的
所以,最終的方案必須滿足如下的兩個特性之一:
1.用的20<5
2.剩的50<2
可以2*5=10次枚舉。
20和50的張數已經確定的話,直接貪心選擇100/10/1即可。
找零錢——貪心
相關推薦
找零錢——貪心
bsp min 要求 不能 替換 spa font 枚舉 是否 找零錢? 有 100 元、50 元、20 元、10 元、5 元和 1 元這些面值的錢? 求湊出 ?? 元的最多張數和最少張數,要求第 ?? 種面值的錢不能用超過 ???? 張? 多組詢問,?? ≤ 10^5,
資料結構--貪心演算法解決找零錢問題 這裡用的是人民幣()
if ((origAmount % 500) < origAmount) { coins[8] = (int)(origAmount / 500); remainAmount = origAm
找零錢問題的貪心演算法(java描述)
問題描述:當前有面值分別為2角5分,1角,5分,1分的硬幣,請給出找n分錢的最佳方案(要求找出的硬幣數目最少)問題分析:根據常識,我們到店裡買東西找錢時,老闆總是先給我們最大面值的,要是不夠再找面值小一點的,直到找滿為止。如果老闆都給你找分數的或者幾角的,那你肯定不幹,另外
找零錢問題(C語言實現)——貪心演算法應用(1)
#include<stdio.h> void greedyMoney(int m[],int k,int n); int main(void) { int money[] = {20,10,5,1}; int k; k = sizeof(money)/sizeof(money[0]
pat(B) 1037. 在霍格沃茨找零錢(水題)
swa scanf mes namespace mod amp content -a clu 代碼: #include<cstdio> #include<iostream> #include<cstring> #include&
FCC 高級算法題 收銀機找零錢
對象 org tar uart price str urn object lin Exact Change 設計一個收銀程序 checkCashRegister() ,其把購買價格(price)作為第一個參數 , 付款金額 (cash)作為第二個參數, 和收銀機中零錢
PAT乙級-1037. 在霍格沃茨找零錢(20)
str stdio.h ... small 完全 class -1 clas cnblogs 如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統 —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon),二十九個納特(Knut)兌一個西可,
1716: [Usaco2006 Dec]The Fewest Coins 找零錢
printf b- can inf std code coins 硬幣 -c n<=100種硬幣,給每種的硬幣的面額<=120和我每種有多少個<=10000,店主的硬幣跟我一樣但有無限個,求買t<=10000塊錢的東西錢最少轉手幾次。 我拿的硬幣最少
動態規劃 O(n)時間復雜度的找零錢問題
復雜 log pac style cnblogs set ios scanf sizeof 1 //O(n)時間復雜度的找零錢問題 2 #include <iostream> 3 #include <bits/stdc++.h> 4 usi
動態規劃法(二)找零錢問題
解答 time() 自己的 世界 結果 斐波那契數 自己 imp easy ??本次博客嘗試以storyline的方式來寫作,如有不足之處,還請多多包涵~~ 問題的誕生 ??我們故事的主人公叫做丁丁,他是一個十幾歲的小男孩,機智聰穎,是某某雜貨店的小學徒。在他生活的國度裏,
PAT 1037 在霍格沃茨找零錢
include 輸入格式 lan printf space href -s clu its https://pintia.cn/problem-sets/994805260223102976/problems/994805284923359232 如果你是哈利·波特迷,
【PAT】B1037 在霍格沃茨找零錢(20 分)
-- mes printf spa str using print esp amp #include<stdio.h> #include<string.h> #include<algorithm> using namespace std;
1037 在霍格沃茨找零錢(20 分)
輸入格式 -s n) printf int 容易 amp ble 系統 如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統 —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon),二十九個納特(Knut)兌一個西可,很容易。”現在,給
找零錢的算法實現(Java)
pre spa hang 算法 sys change [] int eal 簡單的算法 基本思路就是將面值從大到小統計(外循環), 若當前金額大於某面值, 則當前金額減掉該面值, 並將面值對應張數+1, 繼續往下判斷(內循環) 1 public void Chan
找零錢(母函數)
沒有 script rip space ace leo ret std color Description 我們知道人民幣有1、2、5、10、20、50、100這幾種面值。 現在給你 n(1≤n≤250)元,讓你計算換成用上面這些面額表示且總數不
基於python的動態規劃經典問題(爬樓梯,取珠寶,最大子序列和,找零錢)
1,爬樓梯問題 一個人爬樓梯,每次只能爬1個或兩個臺階,假設有n個臺階,那麼這個人有多少種不同的爬樓梯方法 動態規劃的狀態轉移:第 i 個狀態的方案數和第 i-1, i-2時候的狀態有關,即:dp[i]=dp[i-1]+dp[i-2],dp表示狀態矩陣。 def climb_stai
1037 在霍格沃茨找零錢——c實現
如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統 —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon),二十九個納特(Knut)兌一個西可,很容易。”現在,給定哈利應付的價錢 P 和他實付的錢 A,你的任務是寫一個程式來計算他應該被找的零錢。
1037. 在霍格沃茨找零錢(20)
如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統 —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon),二十九個納特(Knut)兌一個西可,很容易。”現在,給定哈利應付的價錢P和他實付的錢A,你的任務是寫一個程式來計算他應該被找的零錢。 輸入格式:
PAT乙級 1037 在霍格沃茨找零錢
如果你是哈利·波特迷,你會知道魔法世界有它自己的貨幣系統 —— 就如海格告訴哈利的:“十七個銀西可(Sickle)兌一個加隆(Galleon),二十九個納特(Knut)兌一個西可,很容易。”現在,給定哈利應付的價錢 P 和他實付的錢 A,你的任務是寫一個程式來計算他應該被找的零錢。 輸入
PAT1037. 在霍格沃茨找零錢(20)C++
#include <iostream> using namespace std; int main() { int g1,s1,k1,g2,s2,k2; char x='.'; //cin不能寫成cin>>".">>s1; 這樣就能解決問