美团2017校招-拼凑钱币
来源:互联网 发布:mac里的照片如何导出 编辑:程序博客网 时间:2024/05/16 02:02
[编程题] 拼凑钱币
时间限制:1秒
空间限制:32768K
给你六种面额 1、5、10、20、50、100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。
输入描述:
输入包括一个整数n(1 ≤ n ≤ 10000)
输出描述:
输出一个整数,表示不同的组合方案数
输入例子1:
1
输出例子1:
1
很经典的题目,dp[type][money]=dp[type][money-jine[type]]+dp[type-1][money](要求money-jine[type]》=0才行)
否则是dp[type][money]=dp[type-1][money]
dp[type][money-jine[type]]表示如果出一张jine[type]的钱的情况,dp[type-1][money]表示连一张jine[type]的钱都不出的情况,另外出多于一张jine[type]的钱的情况,可以由dp[type][money-jine[type]]再去解决。#include <iostream>
using namespace std;
#include <vector>
using namespace std;
vector<vector<long long >>dp(6, vector<long long>(10002, 1));
long long money_type[6] = { 1, 5, 10, 20, 50, 100 };
long long solve(int n)
{
for (int i = 1; i < 6;i++)
{
for (int j = 0; j <= n;j++)
{
if (j - money_type[i] >= 0)
{
dp[i][j] = dp[i - 1][j] + dp[i][j - money_type[i]];
}
else
{
dp[i][j] = dp[i - 1][j];
}
}
}
return dp[5][n];
}
int main()
{
/*vector<int> money_type_v;
for (int i = 0; i < 6;i++)
{
money_type_v.push_back(money_type[i]);
}*/
int n;
while (cin>>n)
{
long long res = solve(n);
cout << res << endl;
//return 0;
}
return 0;
}
这个题恶心的地方是用int的只能通过30%,用 long long 一下子就100%了。
阅读全文
0 0
- 美团2017校招-拼凑钱币
- 美团点评笔试-拼凑钱币
- 美团2017编程题—拼凑钱币&大富翁游戏&最大矩形面积&最长公共连续子串
- 拼凑钱币
- 拼凑钱币
- 拼凑钱币
- 【2017美团点评】拼凑面额
- 2017腾讯校招笔试编程题-拼凑零钱
- 【美团校招在线考试笔试题】钱币面值组合
- 美团校招在线考试笔试题:钱币面值组合
- 20170910_拼凑钱币_DP
- 美团笔试题 钱币组合问题
- 美团2017校招笔试--取红包问题
- 2017美团点评校招前端面试题
- 美团2017校招-最大矩形面积
- 美团2017校招-最长公共连续子串
- 美团2017校招客户端方向编程题
- 拼凑钱币 --漫漫算法路 刷题篇
- 20.软件缺陷管理流程(1)
- tensorflow中slim模块api介绍
- HDOJ2647拓扑排序模板程序 连接矩阵实现
- pycharm+pyqt5的配置(三)
- bugku 求getshell
- 美团2017校招-拼凑钱币
- 动态规划之回文最小分割数
- there is a reason
- android6.0 属性
- Android studio中NDK开发(一):CMakeLists.txt编写入门
- uva 10305 拓扑排序
- git第一次碰到冲突
- 责任链模式
- 最小回文串划分