51nod 1101 换零钱
2017-05-23 17:50
323 查看
dp[i]表示i分钱换零钱的方案数
dp[i] = {dp[i-coin[1]]+dp[i-coin[2]]+…+dp[i-coin[13]]}
那个双重循环内外的顺序刚写的时候写反了。调了调,发现有重复计算,再把循环的内外顺序换一下,就好了
dp[i] = {dp[i-coin[1]]+dp[i-coin[2]]+…+dp[i-coin[13]]}
那个双重循环内外的顺序刚写的时候写反了。调了调,发现有重复计算,再把循环的内外顺序换一下,就好了
#include <iostream> #include <algorithm> using namespace std; typedef long long ll; ll coins[14] = {0,1,2,5,10,20,50,100,200,500,1000,2000,5000,10000}; ll dp[100100]; const ll mod = 1e9+7; int main() { cin.sync_with_stdio(false); cin.tie(false); ll n; cin >> n; dp[0] = 1; for(int i = 1; i <= 13; ++i) { for(int j = coins[i]; j <= n; ++j) { dp[j] = (dp[j]+dp[j-coins[i]])%mod; } } cout << dp << endl; return 0; }
相关文章推荐
- 51Nod-1101-换零钱
- 51nod 1101 换零钱(DP)
- 51nod 1101 换零钱 (0-1背包,DP)
- 51NOD 1101 换零钱
- 51nod 1101 换零钱 完全背包
- 51nod 1101换零钱(背包)
- 51nod 1101 换零钱(dp)
- 51nod 1101 换零钱 完全背包的变型 动态规划
- 51nod 1101 换零钱
- 51nod 1101 换零钱 简单dp
- 【51Nod】1101 - 换零钱(完全背包)
- 51Nod 1101 换零钱
- 51nod 1101 换零钱 (完全背包)
- 51nod-1101 换零钱
- 51nod 1101 换零钱
- 51nod 1101 换零钱 完全背包计数
- 51nod 1101 换零钱
- 【51nod】1101 换零钱
- 51nod 1101 换零钱
- 51Nod-1101 换零钱【0/1背包+DP】