(水)牌型种数 蓝桥杯2015年A组真题(背包问题)
2016-03-19 12:09
260 查看
分析:一开始我也只想着用dfs()给写出来,后来发现判重还有剪枝啥的都不太好搞出来,于是这才想到用DP来解,往往组合问题可以当成是选择问题用背包来解,以后多长个心眼吧!这里我们用dp[i][j]表示前i个数(即1-i)中选择j个,
决策为选择k个i,则状态转移为dp[i][j]=Σ(k 0-4)dp[i-1][j-k]
直接上代码:
[/code]
决策为选择k个i,则状态转移为dp[i][j]=Σ(k 0-4)dp[i-1][j-k]
直接上代码:
#include <cstdio> int dp[15][15]; int main() { dp[1][0] = dp[1][1] = dp[1][2] = dp[1][3] = dp[1][4] = 1; for (int i = 2; i <= 13; i++) for (int j = 0; j <= 13; j++) for (int k = 0; k <= 4; k++) if (j >= k) dp[i][j] += dp[i - 1][j - k]; printf("%d\n", dp[13][13]); return 0; }
[/code]
相关文章推荐
- 结组项目-四则运算3
- 构建之法阅读笔记02
- 【Android】21.1 画板资源
- 商业研究(7):旅游市场概览
- 商业研究(7):旅游市场概览
- codeforces 628F
- C# 在第二个窗体上添加数据之后如何刷新第一个窗体加载的数据
- 商业研究(7):旅游市场概览
- 第三次作业 (一)----------------------Visual Studio 2015的安装及单元测试
- 【蓝桥杯】根据给定的手机尾号(4位),按照一定的规则来打分
- NYOJ+dp+使用三维数组来记忆
- cmd
- Android Studio相关资料链接
- poj 2502 Subway
- OSI 七层模型与各层设备对应 详细解释<TCP/IP下数据是如何进行传输>
- 射线与三角面
- 5 个顶级 Android 开源库
- 网络编程学习总结
- 常用插件
- 深入解析JavaScript中函数的Currying柯里化