关于一些数的划分问题
来源:互联网 发布:python expect 编辑:程序博客网 时间:2024/05/29 03:28
问题一:将n划分为若干正整数之和,有多少种划分方法?(hdu1028)
思路一:相当于1-n的完全背包,总重量为n,有多少种组合?
思路二:dp[i][j]表示将i分为最多j组的划分方法数
转移方程为:dp[i][j] = dp[i][j-1] + dp[i-j][j] (i < j) //前者表示至多分成j-1份,后者表示分成j份(将i-j分成j份,剩下的j分成j个1加到刚刚的j份)
dp[i[j] = dp[i][j-1] + 1(i = j)
dp[i][j] = dp[i][i] (j > i)
问题二:将n划分为m个正整数之和,有多少种划分方法?
思路一:相当于1-n的完全背包,不过加了一维状态(二维费用背包)
思路二:dp[i][j]表示将i分为j组的划分方法数
转移方程为:dp[i][j] = dp[i-1][j-1] + dp[i-j][j](j <= i) //前者表示先分出一个1作为一份,然后剩下的i-1分成j-1份(至少有一个1),后者表示先分出j个1再将i-j分成j份,将他们加进去
dp[i][j] = 0(j > i)
问题三:将n划分为最大数不超过k的划分数
完全背包,不过可选范围变成1-k
问题四:将n划分为若干奇正整数之和
思路一:g[i][j]:将i划分为j个偶数;f[i][j]:将i划分为j个奇数
g[i][j] = f[i - j][j];f[i][j] = f[i - 1][j - 1] + g[i - j][j];
方法可以分为两类:
第一类:i中拿出j个1分到每一份中,将剩余的i-j分成j个奇数
第二类:一份包含奇数1,剩余的i-1分成j-1个奇数;另一种,每份至少大于1,将j个1拿出来分到每一份中,其余i-j分成j份
思路二:完全背包问题
问题五:将n划分为若干不同整数之和,有多少种?
思路一:0/1背包问题
思路二:dp[n][m]= dp[n][m-1]+ dp[n-m][m-1] dp[n][m]表示整数 n 的划分中,每个数不大于 m 的划分数。
分两种情况:
a.划分中每个数都小于m,相当于每个数不大于 m-1,划分数为 dp[n][m-1].
b.划分中有一个数为 m.在n中减去m,剩下相当对n-m进行划分,
并且每一个数不大于m-1,故划分数为 dp[n-m][m-1]
- 关于一些数的划分问题
- 数的划分问题
- 简单的划分数问题<划分问题>
- 数的划分问题 【DP】
- 问题 A: 数的划分
- 数的划分问题一
- 数的划分问题二
- 数的划分问题三
- nefu 关于一些数的位数问题
- 关于浮点数的一些问题
- 关于浮点数的一些问题
- 一些关于二进制数的问题
- 简单的划分数问题I(高精度)
- 有关计数问题的DP 划分数
- 有关计数问题的DP 划分数
- 划分数问题 DP
- 【划分数】系列问题
- 关于回调函数和多线程的一些问题
- C++ constexpr
- loadrunner12的使用
- 剑指offer | 训练题57:对称的二叉树
- MYSQL常用命令
- 产品经理和交互设计师有什么区别?
- 关于一些数的划分问题
- PtrClassicFrameLayout 框架使用
- python练习
- C和C++难知识点,简单记
- 华北水利水电大学社会实践7月5日 ——华北水利水电大学 艺术与设计学院“情艺”国情社情调研团走进社区 2017年7月5日,华北水利水电大学“情艺”调研团全体成员来到郑州市夏庄社区内进行关于十八大以来民
- Android5.0之Activity的转场动画
- 基本数据类型&&引用数据类型内存变化
- 轶事 · 拿破仑点兵
- Android广播接收器BroadcastReceiver——学会这一篇文章就够了