51Nod-1101 换零钱【0/1背包+DP】
2018-02-09 10:25
357 查看
1101 换零钱
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。例如:5分钱换为零钱,有以下4种换法:1、5个1分2、1个2分3个1分3、2个2分1个1分4、1个5分(由于结果可能会很大,输出Mod 10^9 + 7的结果)Input
问题分析:这是一个递推组合的问题,关键是找出递推函数来。许多组合问题都有递推式,可以用DP来实现。
程序说明:需要注意模除。
题记:(略)
参考链接:(略)
AC的C++程序如下:#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
const int coins[] = {1,2,5,10,20,50,100,200,500,1000,2000,5000,10000};
const int coinslen = sizeof(coins) / sizeof(coins[0]);
const int MOD = 1e9 + 7;
const int N = 1e5;
long long dp[N + 1];
void setcoin(int n)
{
int k;
memset(dp, 0, sizeof(dp));
dp[0] = 1;
for(int i=0; i<coinslen; i++) {
k = coins[i];
for(int j=k; j<=n; j++) {
dp[j] += dp[j - k];
dp[j] %= MOD;
}
}
}
int main()
{
int n;
scanf("%d", &n);
setcoin(n);
printf("%lld\n", dp
);
return 0;
}
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。例如:5分钱换为零钱,有以下4种换法:1、5个1分2、1个2分3个1分3、2个2分1个1分4、1个5分(由于结果可能会很大,输出Mod 10^9 + 7的结果)Input
输入1个数N,N = 100表示1元钱。(1 <= N <= 100000)Output
输出Mod 10^9 + 7的结果Input示例
5Output示例
4问题链接:51Nod-1101 换零钱
问题分析:这是一个递推组合的问题,关键是找出递推函数来。许多组合问题都有递推式,可以用DP来实现。
程序说明:需要注意模除。
题记:(略)
参考链接:(略)
AC的C++程序如下:#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
const int coins[] = {1,2,5,10,20,50,100,200,500,1000,2000,5000,10000};
const int coinslen = sizeof(coins) / sizeof(coins[0]);
const int MOD = 1e9 + 7;
const int N = 1e5;
long long dp[N + 1];
void setcoin(int n)
{
int k;
memset(dp, 0, sizeof(dp));
dp[0] = 1;
for(int i=0; i<coinslen; i++) {
k = coins[i];
for(int j=k; j<=n; j++) {
dp[j] += dp[j - k];
dp[j] %= MOD;
}
}
}
int main()
{
int n;
scanf("%d", &n);
setcoin(n);
printf("%lld\n", dp
);
return 0;
}
相关文章推荐
- 51nod 1101 换零钱 (0-1背包,DP)
- 51nod 1101 换零钱 简单dp
- 51nod 1101 换零钱 完全背包
- 51nod 1101 换零钱(dp)
- 【51Nod】1101 - 换零钱(完全背包)
- 51nod 1101 换零钱(DP)
- 51nod 1101 换零钱 (完全背包)
- 51nod 1101 换零钱 完全背包计数
- 51nod 1101换零钱(背包)
- 51nod 1101 换零钱 完全背包的变型 动态规划
- 51Nod - 1101 背包
- 51nod 1413 权势二进制 背包dp
- 51nod oj 1101 换零钱【完全背包】
- 51Nod-1101-换零钱
- 51nod 1101 换零钱
- 51nod 1101 换零钱
- 51nod-1101 换零钱
- 51nod 1597 有限背包计数问题 dp
- 51nod 1101 DP
- 51nod 1101 完全背包