SICP——換零錢遞歸解法(樹形遞歸)

来源:https://www.cnblogs.com/skylfy/archive/2019/03/10/10506604.html
-Advertisement-
Play Games

將1美元(100美分)換成半美元,1/4美元,10美分,5美分,1美分的零錢,一共有多少種換法?書上寫的思路很簡單,就是把一美元換成:1:半美元+其他5種硬幣的組合;2:不加半美元,其他4種硬幣的組合;數學函數是,f(m,n)=f(m-coin[n-1],n)+f(m,n-1);不過有特殊情況:1:... ...


將1美元(100美分)換成半美元,1/4美元,10美分,5美分,1美分的零錢,一共有多少種換法?
書上寫的思路很簡單,就是把一美元換成:
1:半美元+其他5種硬幣的組合;
2:不加半美元,其他4種硬幣的組合;
數學函數是,f(m,n)=f(m-coin[n-1],n)+f(m,n-1);不過有特殊情況:
1:m=0時,表示有1種組合;
2:m<0或n=0時無法組合;
綜上,代碼如下:

1
/* 2 2019,3,10 3 from SICP ChangeCoin by sky 4 */ 5 #include<iostream> 6 using namespace std; 7 int ChangeCoin(int money,int n); 8 int Coin[5]={1,5,10,25,50}; //type of coins 9 int main(void){ 10 int money,n; 11 int type=0; 12 cout<<"money:"; 13 cin>>money; 14 cout<<"n:"; 15 cin>>n; 16 type=ChangeCoin(money,n); 17 cout<<"type:"<<type<<endl; 18 return 0; 19 } 20 int ChangeCoin(int money,int n){ 21 if(money==0){ 22 return 1; 23 } 24 else if(money<0||n==0){ 25 return 0; 26 } 27 else{ 28 return ChangeCoin(money-Coin[n-1],n)+ChangeCoin(money,n-1); 29 } 30 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、什麼是AOP? Aspect oritention programming(面向切麵編程),AOP是一種思想,高度概括的話是“橫向重覆,縱向抽取”,如何理解呢?舉個例子:訪問頁面時需要許可權認證,如果每個頁面都去實現方法顯然是不合適的,這個時候我們就可以利用切麵編程。 每個頁面都去實現這個方法就是 ...
  • 參考鏈接:1. 解析H264的SPS信息 https://blog.csdn.net/lizhijian21/article/details/80982403 2. h.264的POC計算 https://www.cnblogs.com/TaigaCon/p/3551001.html 3. 視音頻數 ...
  • 綠茶小說系統是綠茶科技旗下自主開發的小說系統,可以​‌‌支持定製小說網站,小說網站開發,小說網站系統,小說網站源碼,小說網站開發建設,小說網站程式,微信小說網站源碼,一套小說網站管理系統,完整版小說,付費看小說,小說下載等欄目版塊,可以支持定製電腦版+手機版+微信版+小程式版+APP版,由10年的技 ...
  • I. 數據類型 Python3將程式中的任何內容統稱為對象(Object),基本的數據類型有數字和字元串等,也可以使用自定義的類(Classes)創建新的類型。 Python3中有六個標準的數據類型: Number(數字) String(字元串) List(列表) Tuple(元組) Set(集合) ...
  • 2019-03-10/20:19:56 演示:將xml配置方式改為註解方式 靜態以及動態代理推薦博客:https://blog.csdn.net/javazejian/article/details/56267036 junit單元測試jar包:https://share.weiyun.com/5p ...
  • 一 :搭建Java環境 (1)打開IE瀏覽器,輸入網址”https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html“ (2)在JDK下載頁面點擊”JDK download” (3)根據提示 ...
  • 本公司專業承接外貿英文網站定製,國外英文網站建設,多語言貿易網站開發,多語言網站製作等服務,支持電腦版,手機版等,並且個性化定製。 網站顯示語言支持:簡體,繁體,英文,韓文,日文,法文等 提供一站式服務:聯繫QQ:2 3 6 0 2 4 8666(私聊),微信:luenmicro 電話:186-75 ...
  • 題目: 一棵二叉搜索樹可被遞歸地定義為具有下列性質的二叉樹:對於任一結點, 其左子樹中所有結點的鍵值小於該結點的鍵值; 其右子樹中所有結點的鍵值大於等於該結點的鍵值; 其左右子樹都是二叉搜索樹。 所謂二叉搜索樹的“鏡像”,即將所有結點的左右子樹對換位置後所得到的樹。 給定一個整數鍵值序列,現請你編寫 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...