POJ2229 Sumsets(DP)
来源:互联网 发布:平台软件下载 编辑:程序博客网 时间:2024/06/17 12:37
题意:
输入一个数n,要求分解为2的幂的和,求有几种组合方法
要点:
dp方程很难想到啊,先是考虑如果n为奇数,那么组合中肯定有1,那么f[n]=f[n-1];如果n为偶数的话,先考虑如果有1,那么肯定有两个1合并而来,如果没有1,则全为2,4,6这种,这样我们把分解式中所有数除2,最后得到f[n]=f[n-2]+f[n/2]。我自己想是想不出来了,还是挺巧妙的方法。注意题目要求输出保持在9位以内,所以最后%1e9。
#include<stdio.h>#include<stdlib.h>#include<string.h>#define maxn 1000050int f[maxn];int main(){int n;while (~scanf("%d", &n)){memset(f, 0, sizeof(f));f[1] = 1;//组成1的只有1种,组成2的只有两种f[2] = 2;for (int i = 3; i < maxn; i++){if (i % 2 == 1)f[i] = f[i - 1];//奇数与偶数相同,所以只要偶数取余即可else{f[i] = f[i - 2] + f[i / 2];f[i] = f[i] % 1000000000;//最后取余}}printf("%d\n", f[n]);}return 0;}
0 0
- [dp]poj2229 Sumsets
- POJ2229 Sumsets(DP)
- poj2229 Sumsets(dp)
- POJ2229 Sumsets (dp)
- poj2229 Sumsets
- poj2229 Sumsets
- POJ2229 Sumsets
- POJ2229 Sumsets
- POJ2229 Sumsets
- POJ2229--Sumsets
- 【poj2229】Sumsets
- POJ2229-Sumsets
- POJ2229 Sumsets
- sumsets(poj2229)
- POJ2229 Sumsets
- POJ2229 Sumsets
- DP入门50题(3)——poj2229 sumsets
- POJ2229 Sumsets 动态规划
- IOS学习之—— 定时器 NSTimer 和 CADisplayLink 类的使用
- MapReduce 作业提交执行过程代码分析(Hadoop 1.2.1)
- 学习笔记之2016.3.30
- img标签没有文字提示的问题
- matlab进度条
- POJ2229 Sumsets(DP)
- Windows7+Pycharm搭建Spark的开发环境
- Java虚拟机学习 - 内存调优
- 【Redis源码剖析】 - Redis内置数据结构之字典dict
- ZOJ 2836 Number Puzzle
- 使用 dos 打包 Maven成 jar 在dos 下运行
- Spring学习——(四)Spring中的AOP配置
- IOS学习之——位图上下文 -- 水印图片
- hibernate之坑