数的划分问题 【DP】
2015-06-05 23:39
288 查看
问题:
把一个整数n分成k份,每份都不为0,有几种分法?
分析:
情况分为两类
一、
每份中不包含1的方法,为保证每份>=2,先拿出K个1到每一份,然后把剩下的n-k分为k份,分法有dp[n-k][k]
二、
至少有一份包含1,拿出1个当为一份。剩下的n-1个分为k-1份,分法有dp[n-1][k-1].
代码:
把一个整数n分成k份,每份都不为0,有几种分法?
分析:
情况分为两类
一、
每份中不包含1的方法,为保证每份>=2,先拿出K个1到每一份,然后把剩下的n-k分为k份,分法有dp[n-k][k]
二、
至少有一份包含1,拿出1个当为一份。剩下的n-1个分为k-1份,分法有dp[n-1][k-1].
代码:
[code]#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <string> #include <queue> using namespace std; int n, k; int dp[222][10]; int main() { while (cin >> n >> k) { dp[0][0] = 1; for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) { if (i >= j) dp[i][j] = dp[i - j][j] + dp[i - 1][j - 1]; } } cout << dp [k] << endl; } return 0; }
相关文章推荐
- samsung电容命名法则
- 构建Linux根文件系统
- DP经典5题 【DP】
- ASP.NET获取客户端及服务器的信息
- 修改百度编辑器自动添加水印控制宽高
- CentOS 下配置虚拟目录 总是提示说没有权限访问解决方案
- TCP/UDP使用总结
- 区间DP
- 第十四周项目 小试文件
- CCNA学习指南 二层交换和VLAN
- ViewPager的setOnPageChangeListener方法详解
- 每日一支TED——伊洛娜·绍博·德卡瓦路:抵制毒品和枪支暴力中学到的四门课
- 整数划分问题 【DP】
- 黑马程序员--Java基础Day05
- 单机版五子棋
- C语言使用函数递归判断栈的生长方向
- java.lang.IllegalArgumentException: Illegal character in scheme at index 0
- Android学习日记(10)
- sicily 1264(动态规划)
- 中国剩余定理