九度 oj 题目1084:整数拆分
2017-01-15 09:38
197 查看
http://ac.jobdu.com/problem.php?pid=1084
照抄了 http://blog.csdn.net/jdplus/article/details/18839343
参考了 http://www.cnblogs.com/yinger/archive/2012/08/17/2644312.html
这道题,如果找不到递推公式,也可以用完全背包的动态规划来做
#include <stdio.h>
#include <cstring>
static int dp[1000001];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
memset(dp,0,sizeof(dp));
dp[0] =1;
for (int i = 0; i < 21; ++i) {
int v = 1<<i;
for (int j = 1; j<=n; ++j) {
if(j-v>=0){
dp[j] = (dp[j-v] + dp[j])%1000000000;
}
}
}
printf("%d\n",dp
);
}
}
照抄了 http://blog.csdn.net/jdplus/article/details/18839343
参考了 http://www.cnblogs.com/yinger/archive/2012/08/17/2644312.html
#include <stdio.h> int main(){ int a[1000002]; int input; a[0] = a[1] = 1; for (int i = 1; i <=500000; ++i) { a[2*i] = (a[2*i-2] + a[i])%1000000000; a[2*i+1] = a[2*i]; } while(scanf("%d",&input) !=EOF ){ printf("%d\n",a[input]); } }
这道题,如果找不到递推公式,也可以用完全背包的动态规划来做
#include <stdio.h>
#include <cstring>
static int dp[1000001];
int main(){
int n;
while(scanf("%d",&n)!=EOF){
memset(dp,0,sizeof(dp));
dp[0] =1;
for (int i = 0; i < 21; ++i) {
int v = 1<<i;
for (int j = 1; j<=n; ++j) {
if(j-v>=0){
dp[j] = (dp[j-v] + dp[j])%1000000000;
}
}
}
printf("%d\n",dp
);
}
}
相关文章推荐
- 九度OJ 题目1084:整数拆分
- 九度OJ 1084 整数拆分
- 【九度OJ】题目1084:整数拆分
- 九度OJ 1084 整数拆分
- 九度oj-1084-整数拆分
- <九度 OJ>题目1084:整数拆分
- 九度OJ 1084: 整数拆分
- 九度OJ 1084 整数拆分
- 九度OJ 题目1034:寻找大富翁
- 九度OJ 题目1193:矩阵转置
- 九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目
- <C/C++算法>九度OJ题目1465--1515解题练习(九)
- 九度OJ 题目1473:二进制数
- a+b (九度oj 题目60)
- 【学习笔记】〖九度OJ〗题目1432:叠筐
- 九度oj 题目1007:奥运排序问题 【ZJU2010考研机试题3】【容易理解混乱】
- 二叉树之由前序遍历和中序遍历求后序遍历——九度OJ题目1078:二叉树遍历
- 九度OJ 题目1029:魔咒词典
- 九度oj 题目1544:数字序列区间最小值
- 九度 oj 题目1040:Prime Number