你有1元、5元、7元三種硬幣,求一種方法,用最少的硬幣湊出m元
/* * 程式碼:學習動態規劃的思想,採用自底向上,用迭代去實現。 * * 硬幣數目的最小單元是1、3、5,湊一次必須使用三個單元之一,假設 * 錢的數目為m,則 m = 1 * x + 3 * y + 5 * z; * * 如果要湊夠0元,只有一種方案,使用0個硬幣。 * 如果要湊夠1元,只有一種方案,先拿1元,再湊夠剩下的1-1=0元,而由上一步湊0元方法已知。 * 如果要湊夠2元,只有一種方案,先拿1元,再湊夠剩下的2-1=1元,而由上一步湊1元方法已知。 * 如果要湊夠3元,有兩種方案,先拿1元,再湊夠剩下的3-1=2元;或者先拿2元,再湊夠剩下的3-2=1元。 * 而由上一步湊1元和2元方法已知,比較兩種方法,哪種方法使用硬幣數目少。 * 如果要湊夠4元,有兩種方案,先拿1元,再湊夠剩下的4-1=3元;或者先拿3元,再湊夠剩下的4-3=1元; * 而由上一步湊1元和3元方法已知,比較兩種方法,哪種方法使用硬幣數目少。 * 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 * 如果要湊夠10元,有三種方案,先拿1元,再湊夠剩下的10-1=9元;或者先拿3元,再湊夠剩下的10-3=7元; * 或者先拿5元,再湊夠剩下的10-5=5元。 * 而由上一步湊7元和9元方法已知,比較兩種方法,哪種方法使用硬幣數目少。 * 如果要湊夠11元,有三種方案,先拿1元,再湊夠剩下的11-1=10元;或者先拿3元,再湊夠剩下的11-3=8元; * 或者先拿5元,再湊夠剩下的11-5=6元。 * 而由上一步湊10元和8元方法已知,比較兩種方法,哪種方法使用硬幣數目少。 * 把上述過程用程式碼實現,用兩個for迴圈即可完成。 */ package others; public class CoinCoin { //測試用例 public static void main(String[] args) { int m = 112; int[] temp = coinCoin(m); for(int i = 0; i <= m; i++) { System.out.println(i + "元最少需要" + temp[i] + "個硬幣!"); } } //找出最少的錢的數目 private static int[] coinCoin(int m) { int[] a = {1, 3, 5}; //硬幣面值 int[] temp = new int[m + 1]; //儲存所需硬幣的數目 for(int i = 0; i <= m; i++) { temp[i] = i; //預設全部使用1元,則i元最多需要使用i個銀幣。 } for(int i = 1; i <= m; i++) { //這個外層循壞,依次對1到m個錢數,進行湊數 for(int j = 0; j < 3; j++) { //這個內層迴圈,每次都會固定執行3次 if(a[j] <= i && temp[i - a[j]] + 1 < temp[i]) { temp[i] = temp[i - a[j]] + 1; /* a[j] <= i依次判斷i和1,3,5的相對大小,決定第一步有幾種方案, * temp[i - a[j]] + 1 < temp[i]這個不太容易理解, * 我們將temp[i]初始值設為i,在三次內迴圈判斷中,如果這一次temp[i - a[j]] * 比上一次小,那麼就將這一次的值賦給temp[i] * * 舉例,i=6,此時前面迴圈執行完畢 * temp[0] = 0,temp[1] = 1 * temp[2] = 2,temp[3] = 1 * temp[4] = 2,temp[5] = 3 * 第一步就有三種方案,當前內迴圈執行三次 * j = 0 時,a[j]=1 <= i=6成立,temp[i - a[j]] + 1 = temp[6-1] + 1 = 4 < temp[i]=6成立 * 所以temp[6] = temp[i - a[j]] + 1 = 4 * j = 1 時,a[j]=3 <= i=6成立,temp[i - a[j]] + 1 = temp[6-3] + 1 = 2 < temp[i]=4成立 * 所以temp[6] = temp[i - a[j]] + 1 = 2 * j = 2 時,a[j]=5 <= i=6成立,temp[i - a[j]] + 1 = temp[6-5] + 1 = 2 < temp[i]=2不成立 * 所以temp[6] = temp[i - a[j]] + 1 = 2 * 這樣,最終temp[6] = 2,就從三種方案中選擇出最小的了 */ } } } return temp; } }
相關推薦
你有1元、5元、7元三種硬幣,求一種方法,用最少的硬幣湊出m元
/* * 程式碼:學習動態規劃的思想,採用自底向上,用迭代去實現。 * * 硬幣數目的最小單元是1、3、5,湊一次必須使用三個單元之一,假設 * 錢的數目為m,則 m = 1 * x + 3 * y + 5 * z; * * 如果要湊夠0元,只有一種方案,
關於Hibernate5.0、5.1、5.2、5.3下載不了的解決辦法
突然發現下載Hibernate,下載不了,可能是天國的和諧太厲害了,直接下載不了~從下圖中體驗一下: 1.搜尋hibernate,進入官網:http://hibernate.org/ 2.看到Hibernate ORM,點選右下角的More或-> 3.看到右上角的Latest s
用小於等於n元去買100只雞,大雞5元/只,小雞3元/只,還有一種1/3元/只得小雞,分別記為下,x,y,z只,程式設計求解x,y,z所有可能解
/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name: Author:
Centos下Yum安裝PHP 5.5、5.6、7.0
mbstring eas common mysql 編譯安裝 test .rpm mysq cli Centos系統自帶的php版本很低,如果我們需要使用高版本的php,可以不用編譯安裝,直接用yum安裝會非常省時省力。 1.檢查當前安裝的PHP包yum list inst
CentOS 6.5通過yum安裝mysql 5.5、5.6、5.7版本
yum安裝mysql mysql5.5 mysql5.6 mysql5.7 1、安裝mysql的yum源,這個源包括5.5、5.6、5.7版本:備註:如果要專門下載某個版本,可以到http://dev.mysql.com/downloads/repo/yum下載。[root@agile ~]#
c語言 存款利息計算,1000元,存5年,求五種方案存款五年後的本息和
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
PHP 5.2、5.3、5.4、5.5、5.6 各版本新功能詳解
總結 PHP5.2 以前:autoload, PDO 和 MySQLi, 型別約束 PHP5.2:JSON 支援 PHP5.3:棄用的功能,匿名函式,新增魔術方法,名稱空間,後期靜態繫結,Heredo
PHP 5.3、5.4、5.5、5.6 中的新特性
PHP 5.6 1、可以使用表示式定義常量 https://php.net/manual/zh/migration56.new-features.php 在之前的 PHP 版本中,必須使用靜態值來定義常量,宣告屬性以及指定函式引數預設值。 現在你可以使用包括數值、字串字面量以及其他常量在
雲服務模式:SaaS、PaaS和IaaS,哪一種適合你?
有人分析了Techno-Pulse網站的GoogleAnalytics資料,而後發現,其中有幾個關鍵詞與CloudServiceModels(雲服務模式)有關。而且讀者們似乎更在意服務模式方面的實用資訊,以便幫助自己作出決定。雖然,不少文章中都曾或多或少的提及,本文將和
php5.2 、5.3、5.4、5.5、5.6 各個版本升級不相容點
最近工作中將php5.2升級到php5.6,在升級的過程中,需要對php各個版本之間的不相容的問題進行討論和測試論證。依據php版本不相容 分支說明 , 分別在多個版本之間進行了測試,分享如下:php5.3 不相容5.21.在 PHP 5.3.x 的所有繫結擴充套件中應用了新
PHP 5.2、5.3、5.4、5.5、5.6 版本區別對比以及新功能詳解
截至目前(2015.1), PHP 的最新穩定版本是 PHP5.5, 但有差不多一半的使用者仍在使用已經不在維護 的 PHP5.2, 其餘的一半使用者在使用 PHP5.3 .因為 PHP 那“集百家之長”的蛋疼語法,加上社群氛圍不好,很多人對新版本,新特徵並無興趣。本文將會
目前人工智慧最火的是-深度學習、機器學習、,採用深入淺出的方法,結合例項並配以大量程式碼練習,重點講解深度學習框架模型、科學演算法、訓練過 程技巧。
深度學習DeepLearning人工智慧核心技術開發與應用 2018年09月13日— 2018年09月16日 北京 物件:從事人工智慧、深度學習、計算機視覺、人臉識別、 影象處理、 行人檢測、自然語言處理 區塊鏈等醫學 遙感 電力 金融 經濟等高維度 資料領域相關的老師 研究生 工程師;
有一個函式 x , x大於1 ,y等於 { 2x-1 1大於等於x小於10 3x-11 x大於等於10 寫一段程式,輸入x,輸出y。
題目描述 有一個函式 | x x<1 y= { 2x-1 1<=x<10 | 3x-11 x>=10 寫一段程式,輸入x,輸出y。 將下面的程式填寫完整。 #include <stdio.h> int main() { int x,y;
資料結構實驗-C語言-二叉樹的建立,前、中、後序遍歷的遞迴演算法和非遞迴演算法,求葉子結點數目,求二叉樹深度,判斷二叉樹是否相似,求二叉樹左右子樹互換,二叉樹層序遍歷的演算法,判斷二叉樹是否是完全二叉樹
1.實驗目的 熟練掌握二叉樹的二叉連結串列儲存結構的C語言實現。掌握二叉樹的基本操作-前序、中序、後序遍歷二叉樹的三種方法。瞭解非遞迴遍歷過程中“棧”的作用和狀態,而且能靈活運用遍歷演算法實現二叉樹的其它操作。 2.實驗內容 (1)二叉樹的二叉連結串列的建立 (2)二叉樹的前、中、後
5款用得最爽的黑科技軟體神器,每一款都好用到你無以倫比
閒話少扯,直接切入正題,5款軟體件,值得你高調的收藏的! 1、一粒雲盤軟體 一款專注於企業資料管理的操作軟體,每一個精細的許可權下都是一次小小的改革,主要用於大型企業的資料資產保護,一個規模穩大的企業,資料是不可忽視的,有可能一個小小的資料丟失或者破壞就可能引發企業一次大災難,當然你可以說,
所謂的效能,是負載、吞吐量、可接受的響應時間和資源利用率之間的一種平衡。
所謂的效能,是負載、吞吐量、可接受的響應時間和資源利用率之間的一種平衡。 通過一個理髮店的例子,然後引出最佳併發使用者數和最大併發使用者數的概念 背景:理髮店共有3名理髮師,每名理髮師完成一次理髮都耗時1小時,店裡有還有一些位子供客人等位,每個客人在理髮店呆的時間超過3小時就會無法忍受離
【java學習記錄】7.定義一個介面ArearInterface,其中包含一個方法,計算面積三角形、矩形、圓形的面積
* 定義一個介面ArearInterface,其中包含一個方法,計算面積 * 定義三個類:三角形、矩形、圓形,分別實現ArearInterface中的方法 * 定義一個主類,將三角形和圓形的面積顯示在螢幕上ArearInterface 介面public interface A
動態規劃解決最少硬幣湊成m元錢
You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need t
二叉樹建立、遍歷(前序,中序,後序),求葉節點個數,求節點個數
二叉樹是筆試面試中考試最頻繁的資料結構之一,主要包括,程式建立一個二叉樹,三種次序遍歷二叉樹,返回葉子節點的數目,求二叉樹節點的總數等。建立一個二叉樹節點的資料結構 typedef struct Node {int data;struct Node *left,*right
無極哥教你三種微信爆粉的方法,一天加滿5000好友
直接 數據傳輸 騰訊 用戶數據 規則 時間 服務器 之前 href 2018年,朋友圈或各種社交場合總時不時冒出“某某做微信爆粉,一天加滿5000好友”的說法。這確實是存在的,但嚴重違規。突破每日添加好友數量上限的雙向爆粉,必須使用修改微信底層協議的第三方軟件才能實現。今天