Coin Change

一、題目

Suppose there are 5 types of coins: 50-cent, 25-cent, 10-cent, 5-cent, and 1-cent. We want to make changes with these coins for a given amount of money.

For example, if we have 11 cents, then we can make changes with one 10-cent coin and one 1-cent coin, or two 5-cent coins and one 1-cent coin, or one 5-cent coin and six 1-cent coins, or eleven 1-cent coins. So there are four ways of making changes for 11 cents with the above coins. Note that we count that there is one way of making change for zero cent.

Write a program to find the total number of different ways of making changes for any amount of money in cents. Your program should be able to handle up to 100 coins.
Input
The input file contains any number of lines, each one consisting of a number ( ≤250 ) for the amount of money in cents.
Output
For each input line, output a line containing the number of different ways of making changes with the above 5 types of coins.
Sample
Inputcopy Outputcopy
11
26
4
13

二、分析

題意要求使用五種面值的硬幣,組成不同金額能有多少組合的方法
題目中有一個條件,硬幣的數量不能超過100。
那么下面這種遞推的方法就不能夠控制硬幣是數量

//錯誤代碼
#include<iostream>
#include<cstring>
using namespace std;
const int maxn=1e3+5;
int dp[maxn];
int a[5]={1,5,10,25,50};
int main()
{int n;while(cin>>n){memset(dp,0,sizeof(dp));dp[0]=1;for(int i=0;i<5;i++)for(int j=a[i];j<=n;j++){dp[j]=dp[j]+dp[j-a[i]];}cout<<dp[n]<<endl;}
}

定義dp[i][j]表示i枚硬幣組成j有的方法總數
這樣就可以控制硬幣的數量

//正確代碼
#include <iostream>
#include <cstring>
using namespace std;
int dp[110][260];
// dp[i][j]表示i枚硬幣組成j有的方法總數
int a[6] = {1, 5, 10, 25, 50};
int main()
{int n;while (cin >> n){memset(dp, 0, sizeof(dp));dp[0][0] = 1;for (int i = 0; i < 5; i++)for (int j = a[i]; j <= n; j++)for (int k = 1; k <= 100; k++){dp[k][j] += dp[k - 1][j - a[i]];}int ans = 0;for (int i = 0 ;i<= 100; i++)//要從0開始{ans += dp[i][n];}cout << ans << endl;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36349.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36349.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36349.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

springboot工程使用阿里云OSS傳輸文件

在application.yml文件中引入對應的配置&#xff0c;一個是對應的節點&#xff0c;兩個是密鑰和賬號&#xff0c;還有一個是對應文件的名稱&#xff1b; 采用這樣方式進行解耦&#xff0c;便于后期修改。 然后需要設置一個properties類&#xff0c;去讀對應的配置信息 用到了…

MySQL Linux自建環境備份至遠端服務器自定義保留天數

環境準備 linux下安裝mysql請看 Linux環境安裝單節點mysql8.0.16 系統版本: CentOS 7 軟件版本: mysql8.0.16 備份策略與實現方法 此次備份依賴mysql自帶命令mysqldump與linux下crontab命令(定時任務) mysqldump mysqldump客戶實用程序執行 邏輯備份,產生一組能夠被執行…

為什么需要知識圖譜,如何構建它?

從關系數據庫遷移到圖形數據庫的指南 跟隨 發表于 邁向數據科學 7 分鐘閱讀 4天前 154 4 一、說明 TLDR&#xff1a;知識圖譜在圖數據庫中組織事件、人員、資源和文檔&#xff0c;以進行高級分析。本文將解釋知識圖譜的用途&#xff0c;并向您展示如何將關系數據模型轉換為圖…

HTTP協議的發展過程

前言 HTTP協議是一種用于在網絡上傳輸信息的應用層協議&#xff0c;它為萬維網的運作提供了基礎。 最早的版本是HTTP/0.9&#xff0c;它是HTTP協議的第一個版本&#xff0c;誕生于1991年&#xff0c;其設計初衷是為了在計算機之間傳輸簡單的超文本文檔&#xff0c;即HTML。 在…

在Java中對XML的簡單應用

XML 數據傳輸格式1 XML 概述1.1 什么是 XML1.2 XML 與 HTML 的主要差異1.3 XML 不是對 HTML 的替代 2 XML 語法2.1 基本語法2.2 快速入門2.3 組成部分2.3.1 文檔聲明格式屬性 2.3.2 指令&#xff08;了解&#xff09;&#xff1a;結合CSS2.3.3 元素2.3.4 屬性**XML 元素 vs. 屬…

【Linux】Linux中獲取UUID的方法

1、從mmc塊設備獲取 在Linux下,獲取MMC的CID(Card Identification,識別ID) cat /sys/block/mmcblk0/device/cidMMC CID組成 MID: [127:120] —— 8bit(1Byte)Manufacturer ID,由MMCA分配,比如Sandisk為0x02,Kingston為0x37,Samsung為0x15。OID: [119:104] —— 16b…

windows程序基礎

一、windows程序基礎 1. Windows程序的特點 1&#xff09;用戶界面統一、友好 2&#xff09;支持多任務:允許用戶同時運行多個應用程序(窗口) 3&#xff09;獨立于設備的圖形操作 使用圖形設備接口( GDI, Graphics Device Interface )屏蔽了不同硬件設備的差異&#…

什么是視頻的編碼和解碼

這段描述中&#xff0c;視頻解碼能力和視頻編碼能力指的是不同的處理過程。視頻解碼是將壓縮過的視頻數據解開并還原為可播放的視頻流&#xff0c;而視頻編碼是將原始視頻數據壓縮成更小的尺寸&#xff0c;以減少存儲空間和傳輸帶寬。在這個上下文中&#xff0c;解碼能力和編碼…

LVGL學習筆記 30 - List(列表)

目錄 1. 添加文本 2. 添加按鈕 3. 事件 4. 修改樣式 4.1 背景色 4.2 改變項的顏色 列表是一個垂直布局的矩形&#xff0c;可以向其中添加按鈕和文本。 lv_obj_t* list1 lv_list_create(lv_scr_act());lv_obj_set_size(list1, 180, 220);lv_obj_center(list1); 部件包含&…

Android:換膚框架Android-Skin-Support

gihub地址&#xff1a;https://github.com/ximsfei/Android-skin-support 樣例&#xff1a; 默認&#xff1a; 更換后&#xff1a; 一、引入依賴&#xff1a; // -- 換膚依賴implementation skin.support:skin-support:4.0.5// skin-supportimplementation skin.support:ski…

Rust語法:變量,函數,控制流,struct

文章目錄 變量可變與不可變變量變量與常量變量的Shadowing標量類型整數 復合類型 函數控制流if elseloop & whilefor in structstruct的定義Tuple Structstruct的方法與函數 變量 可變與不可變變量 Rust中使用let來聲明變量&#xff0c;但是let聲明的是不可變變量&#x…

Golang自定義類型與類型別名

type myInt int32 與 type myInt int32&#xff0c;概念并不相同 自定義類型&#xff1a;type myInt int32 通過這種方式定義的類型是一個全新的類型&#xff0c;這個新類型與int32有相同的底層結構&#xff0c;但是卻與int32類型不兼容。 type myInt int32var a int32 5 var…

雙色球彩票系統---(java實現)

雙色球彩票系統&#xff1a;需求&#xff1a;投注號碼由6個紅色號碼和1個藍色球號碼組成。紅色球號碼從1-33中選擇&#xff0c;藍色球號碼從1-16當中選擇 * 紅 藍 * 一等獎 6 1 * 二等獎 6 0 * 三等獎 5 1 * 四等獎 5 0 * 4 1 * 五等獎 4 0 * …

Blazor簡單教程(1.1):Razor基礎語法

文章目錄 前言基本文件配置引入Layout組件 語法介紹pagecodeRazor 語法[ 顯式表達和隱式表達](https://learn.microsoft.com/zh-cn/aspnet/core/mvc/views/razor?viewaspnetcore-7.0#explicit-razor-expressions) 綁定簡單綁定雙向綁定帶參數的函數綁定 依賴注入 前言 Blazor…

synchronized使用

目錄 問題描述 1 鎖方法 2 鎖代碼塊 3 鎖某個類 4 靜態方法上的synchronized 當我們處理多線程處理同步問題的時候就會用到synchronized這個關鍵字&#xff0c;下面介紹下synchronized的四種用法。 問題描述 介紹之前我們先來看下&#xff0c;在java 多線程中 如果沒有線…

leetcode1. 兩數之和

題目&#xff1a;leetcode1. 兩數之和 描述&#xff1a; 給定一個整數數組 nums 和一個整數目標值 target&#xff0c;請你在該數組中找出 和為目標值 target 的那 兩個 整數&#xff0c;并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案。但是&#xff0c;數組中…

QT:UI控件(按設計師界面導航界面排序)

基礎部分 創建新項目&#xff1a;QWidget&#xff0c;QMainWindow&#xff0c;QDialog QMainWindow繼承自QWidget&#xff0c;多了菜單欄; QDialog繼承自QWidget&#xff0c;多了對話框 QMainWindow 菜單欄和工具欄&#xff1a; Bar: 菜單欄&#xff1a;QMenuBar&#xff0…

A Survey for In-context Learning

A Survey for In-context Learning 摘要&#xff1a; 隨著大語言模型(LLMs)能力的增長&#xff0c;上下文學習(ICL)已經成為一個NLP新的范式&#xff0c;因為LLMs僅基于幾個訓練樣本讓內容本身增強。現在已經成為一個新的趨勢去探索ICL來評價和extrapolate LLMs的能力。在這篇…

微服務06-分布式事務解決方案Seata

1、Seata 概述 Seata事務管理中有三個重要的角色: TC (Transaction Coordinator) - **事務協調者:**維護全局和分支事務的狀態,協調全局事務提交或回滾。 TM (Transaction Manager) - **事務管理器:**定義全局事務的范圍、開始全局事務、提交或回滾全局事務。 RM (Resourc…

Java地圖專題課 基本API BMapGLLib 地圖找房案例 MongoDB

本課程基于百度地圖技術&#xff0c;由基礎入門開始到應用實戰&#xff0c;適合零基礎入門學習。將企業項目中地圖相關常見應用場景的落地實戰&#xff0c;包括有地圖找房、輕騎小程序、金運物流等。同時講了基于Netty實現高性能的web服務&#xff0c;來處理高并發的問題。還講…