摘要: 做完整数划分那题后,现在感觉这道题很简单,状态转移方程为dp[i][j] = dp[i][i] j>i = dp[i-j][j-1]+dp[i][j-1]建议看看我的博客上的hoj1402题#include <iostream>#include <cstring>using namespace std;#define X 510long long dp[X][X],n;void init(){ memset(dp,0,sizeof(dp)); for(int i=1;i<X;i++) //初始化 { dp[1][i] = 1; dp[0][i] = 1; } 阅读全文
posted @ 2012-03-13 21:17 yejinru 阅读(125) 评论(0) 推荐(0) 编辑
摘要: /*整数划分是一个经典的问题。希望这道题会对你的组合数学的解题能力有所帮助。Input 每组输入是两个整数n和k。(1 <= n <= 50, 1 <= k <= n)Output 对于每组输入,请输出六行。 第一行: 将n划分成若干正整数之和的划分数。 第二行: 将n划分成k个正整数之和的划分数。 第三行: 将n划分成最大数不超过k的划分数。 第四行: 将n划分成若干奇正整数之和的划分数。 第五行: 将n划分成若干不同整数之和的划分数。 第六行: 打印一个空行。第一行和第三行: 对于第一行和第三行,根据状态转移方程很容易写出: dp[i][j] = dp[i][i] 阅读全文
posted @ 2012-03-13 20:55 yejinru 阅读(371) 评论(0) 推荐(1) 编辑