简单的整数划分问题
来源:互联网 发布:南风知我意叶小意txt 编辑:程序博客网 时间:2024/05/21 19:04
2:简单的整数划分问题
- 查看
- 提交
- 统计
- 提问
- 总时间限制:
- 100ms
- 内存限制:
- 65536kB
- 描述
将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。
正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。- 输入
- 标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50)。
- 输出
- 对于每组测试数据,输出N的划分数。
- 样例输入
5
- 样例输出
7
- 提示
5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1+1
可以看做完全背包问题,1~n的重量装满n容量的背包的方法有多少种
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>using namespace std;typedef long long LL;using namespace std;#define INF 0x3f3f3f3f#define mod 1000000007#define N 100int dp[N];int a[N];int main(){ int n; while(scanf("%d",&n)!=EOF){ memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) a[i]=i; dp[0]=1; for(int i=1;i<=n;i++) { for(int j=a[i];j<=n;j++) { if(j>=a[i]) dp[j]=dp[j]+dp[j-a[i]]; } } printf("%d\n",dp[n]); } return 0;}
阅读全文
1 0
- 简单的整数划分问题
- 简单的整数划分问题
- 简单的整数划分问题
- 简单整数划分问题
- openjudge 简单的整数划分问题
- OpenJudge_P7215 简单的整数划分问题(DP)
- OpenJudge 简单的整数划分问题(递归)
- OpenJudge 7215简单的整数划分问题
- openjudge 简单的整数划分问题
- MOOC 简单的整数划分问题
- 4117:简单的整数划分问题
- 简单的整数划分
- 整数划分的问题
- 整数的划分问题
- 整数的划分问题
- 整数的划分问题
- 百练 04 简单的整数划分问题
- 百练:简单的整数划分问题(经典dp)
- Java系列之JDBC和ODBC之间的区别与联系
- 安装NVIDIA显卡驱动以及CUDA
- 性能优化1-概述
- ofbiz实体引擎(六) GenericHelper的初始化创建
- 自定义view
- 简单的整数划分问题
- 基于Linux的多线程Web Server
- ORACLE 中的union(去重并集),union all(不去重并集),intersect(交集),minus(减集)
- ETL学习笔记之三:MS SQL DTS
- OD常用断点大全~
- ETL学习笔记之四:开源项目 Kettle
- 对JAVA框架SSH的理解
- Neural Networks
- 循环反思-for循环的滥用