百练 03 复杂的整数划分问题
来源:互联网 发布:js class隐藏div 编辑:程序博客网 时间:2024/05/19 23:29
百练 03 复杂的整数划分问题
200ms 65536kB
描述
将正整数
正整数
输入
标准的输入包含若干组测试数据。每组测试数据是一行输入数据,包括两个整数
输出
对于每组测试数据,输出以下三行数据:
第一行: N划分成K个正整数之和的划分数目
第二行: N划分成若干个不同正整数之和的划分数目
第三行: N划分成若干个奇正整数之和的划分数目
样例输入
5 2
样例输出
2
3
3
提示
- 第一行: 4+1, 3+2,
- 第二行: 5,4+1,3+2
- 第三行: 5,1+1+3, 1+1+1+1+1+1
参考:整数划分问题
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int MAX_NUM = 50 + 5;int N, K;int dp[MAX_NUM][MAX_NUM];int g[MAX_NUM][MAX_NUM];int f[MAX_NUM][MAX_NUM];int main() { while(scanf("%d%d", &N, &K) != EOF) { // N划分成K个正整数之和的划分数目 memset(dp, 0, sizeof(dp)); // dp(i,j)表示正整数i划分成j个正整数 dp[0][0] = 1; for(int i = 1; i <= N; i++) { for(int j = 1; j <= N; j++) { if(i < j) { dp[i][j] = 0; } else if(i > j){ dp[i][j] = dp[i - 1][j - 1] + dp[i - j][j]; } else { dp[i][j] = 1; } } } cout << dp[N][K] << endl; // N划分成若干个不同正整数之和的划分数目 memset(dp, 0, sizeof(dp)); // dp(i,j)表示正整数i划分为不超过j的不同整数的划分数 dp[0][0] = 1; for(int i = 1; i <= N; i++) { for(int j = 1; j <= N; j++) { if(i < j) { dp[i][j] = dp[i][i]; } else if(i > j) { dp[i][j] = dp[i - j][j - 1] + dp[i][j - 1]; } else { dp[i][j] = dp[i][j - 1] + 1; } } } cout << dp[N][N] << endl; // N划分成若干个奇正整数之和的划分数目 memset(g, 0, sizeof(g)); memset(f, 0, sizeof(f)); // f(i,j)表示正整数i划分为j个奇数之和的划分数 // g(i,j)表示正整数i划分为j个偶数之和的划分数 f[0][0] = g[0][0] = 1; for(int i = 1; i <= N; i++) { for(int j = 1; j <= i; j++) { g[i][j] = f[i - j][j]; f[i][j] = f[i - 1][j - 1] + g[i - j][j]; } } int num = 0; for(int i = 0; i <= N; i++) { num += f[N][i]; } cout << num << endl; } return 0;}
0 0
- Openjudge 百练 03:复杂的整数划分问题
- 百练 03 复杂的整数划分问题
- 复杂的整数划分问题
- 百练 04 简单的整数划分问题
- 百练:简单的整数划分问题(经典dp)
- dp整数划分问题——03:复杂的整数划分问题
- Openjudge7219 复杂的整数划分问题(dp)
- OpenJudge_P7219 复杂的整数划分问题(DP)
- 复杂的整数划分问题(dp)
- 7219:复杂的整数划分问题
- 复杂的整数划分
- 百练:简单整数划分
- OJ 7219 复杂的整数划分问题__动态规划
- 0827 OpenJ#7219 复杂的整数划分问题
- OpenJudge 百练 2016 ACM 暑期课练习题 简单的整数划分问题
- 整数划分的问题
- 整数的划分问题
- 整数的划分问题
- Caffe +VS2013+WINDOWS 64位 无gpu 配置
- Java 编程思想——第一章:对象导论
- Java之详解坦克大战游戏(六)
- jQuery 3.0新特性总结
- Codeforces 84A Toy Army
- 百练 03 复杂的整数划分问题
- 376. Wiggle Subsequence
- [2016ACM多校] HDU5745 匹配
- 【codeforces】New Year and Days
- Hibernate中,One2One的基于注解Annotation的实现
- 二叉搜索树的定义、查找、插入和删除
- Java实现满天星
- 架构设计:系统间通信(41)——自己动手设计ESB(2)
- POJ - 1088 滑雪(DP/记忆化搜索)