博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
牛客网 - [中南林业科技大学第十一届程序设计大赛]兑换零钱(背包问题)
阅读量:1999 次
发布时间:2019-04-28

本文共 830 字,大约阅读时间需要 2 分钟。

题目链接:

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

现有N元钱,兑换成小额的零钱,有多少种换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。

(由于结果可能会很大,输出Mod 10^9 + 7的结果)

输入描述

第一行输入一个整数T,代表有T组数据

接下来T行,每行输入1个数N,N = 100表示1元钱。(1 <= N <= 100000)

输出描述

输出Mod 10^9 + 7的结果

输入

2

5
4

输出

4

3

备注:

5分钱兑换为零钱,有以下4种换法:

1、5个1分
2、1个2分3个1分
3、2个2分1个1分
4、1个5分

解题思路

类似于完全背包,好像是母函数,推出公式就行了。

#include 
using namespace std;const int MOD = 1E9 + 7;int t, n, dp[100005];int m[] = {1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10000};int main() { scanf("%d", &t); while (t--) { scanf("%d", &n); memset(dp, 0, sizeof(dp)); dp[0] = 1; for (int i = 0; i < 13; i++) for (int j = m[i]; j <= n; j++) dp[j] = (dp[j] + dp[j - m[i]]) % MOD; printf("%d\n", dp[n]); } return 0;}

转载地址:http://emftf.baihongyu.com/

你可能感兴趣的文章
2021年不可错过的17种JS优化技巧(一)
查看>>
在 Vue 中用 Axios 异步请求API
查看>>
MySQL进阶查询(SELECT 语句高级用法)
查看>>
Mysql 之主从复制
查看>>
【NLP学习笔记】中文分词(Word Segmentation,WS)
查看>>
对于时间复杂度的通俗理解
查看>>
如何输入多组数据并输出每组数据的和?
查看>>
行阶梯型矩阵
查看>>
MATLAB指定路径保存图片方法
查看>>
JAVA学习笔记6 - 数组
查看>>
JAVA学习笔记10 - 继承
查看>>
【学习笔记】Android Activity
查看>>
诡异的 Scroll view may have only one direct child placed within it 错误
查看>>
location区段
查看>>
nginx访问控制、基于用户认证、https配置
查看>>
linux内存的寻址方式
查看>>
how2heap-double free
查看>>
how2heap-fastbin_dup_consolidate
查看>>
tf keras SimpleRNN源码解析
查看>>
MyBatisPlus简单入门(SpringBoot)
查看>>