整数划分 划分成单峰的回文数列dp[i][j] 表示 把i划分,其中划分的数不能大于j 1 i=1或j=1dp[i][j]= dp[i][j-1]+1 j=i dp(i,j-1)+dp(i-j,min(i-j,j)) i>j>1 1...
分类:
其他好文 时间:
2015-03-14 18:11:54
阅读次数:
113
我们用递归+记忆化的方法来解决普通整数划分问题:定义 f(n,m)为将整数n划分为一系列整数之和,其中加数最大不超过m。得到下面的递推关系式:当n==1 || m==1 只有一种划分,即 1 或者 1+1+1......+1当m>n 显然,等价于 f(n,n)当m==n 此时:我考虑加数包含m与否的...
分类:
其他好文 时间:
2015-03-11 21:36:20
阅读次数:
136
题目:传送门题目描述This is a very simple problem, just like previous one.You are given a postive integer n, and you need to divide this integer into m pieces. ...
分类:
其他好文 时间:
2015-03-10 22:44:56
阅读次数:
124
题目:传送门题目描述整数划分是一个非常经典的数学问题。所谓整数划分,是指把一个正整数n写成为n=m1+m2+...+mi的形式,其中mi为正整数,并且1#include #include #include #include #include #define inf 0x3f3f3f3f#includ...
分类:
其他好文 时间:
2015-03-10 21:06:58
阅读次数:
166
样题:sdut2015寒假结训赛开始我还以为是用背包来做,但是写完了代码,怎么写就是不对,并且在实现的时候确实有点地方我用背包的算法描述不了!后来查到可以用:递归 或者 母函数算法!比赛时曾考虑过用递归来实现,但没有推导出来,后来发现别人的博客里面写着“整数划分问题”应该在讲解递归的时候就该学会了。...
分类:
其他好文 时间:
2015-03-06 18:29:32
阅读次数:
176
又是去理解了一次01背包。这道题目的意思就是给你一个N (N #include #include #include #include #include #include #include #include #include #include #include #include #define Max...
分类:
其他好文 时间:
2015-02-17 12:52:40
阅读次数:
140
题目大意:给出一个整数,问吧这个整数分成任意多个正整数只和的最大乘积是多少。
思路:根据小学奥数的基本知识,我们要吧这个数字分成尽量多个3。然后这个题就解决了。
CODE:
#include
#include
#include
#include
using namespace std;
struct BigInt{
int num[10010],len;
...
分类:
其他好文 时间:
2015-02-07 13:11:45
阅读次数:
119
题目大意:给定一个数n,要求将n划分成一些正整数的和,使这些正整数的乘积最大
结论:
如果n是3的倍数 那么将n划分成n/3个3是最优的
如果n是3的倍数+1 那么将n划分成(n-4)/3个3和两个2是最优的
如果n是3的倍数+2 那么将n划分成(n-2)/3个3和1个2是最优的
证明是有的
考虑不是划分成整数,而是划分成任意实数
设我们将n划分成了x个正实数之和
易知当这x个数相...
分类:
其他好文 时间:
2015-02-07 13:11:35
阅读次数:
148
#includeint q(int n,int m){ if((nm) return q(n,m-1)+q(n-m,m);}int main(){ int n; scanf("%d",&n); printf("%d",q(n,n)); return 0;}整数划分问题是...
分类:
其他好文 时间:
2015-01-26 18:47:08
阅读次数:
137
整数划分,是指把一个正整数n写成如下形式:n=m1+m2+...+mi; (其中mi为正整数,并且1 0),只有一种划分即{1};(2)当m=1时,不论n的值为多少,只有一种划分即n个1,{1,1,1,...,1};(3)当n=m时,根据划分中是否包含n,可以分为两种情况:(a)划分中包含n的情况,...
分类:
其他好文 时间:
2015-01-21 08:57:42
阅读次数:
93