POJ 2229 动态规划

来源:互联网 发布:淘宝修真记txt下载 编辑:程序博客网 时间:2024/05/23 13:17

POJ 2229 动态规划问题
题目的链接如下:
http://poj.org/problem?id=2229

Sumsets
Time Limit: 2000MS Memory Limit: 200000K
Total Submissions: 16603 Accepted: 6574
Description

Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that sum to 7:

1) 1+1+1+1+1+1+1
2) 1+1+1+1+1+2
3) 1+1+1+2+2
4) 1+1+1+4
5) 1+2+2+2
6) 1+2+4

Help FJ count all possible representations for a given integer N (1 <= N <= 1,000,000).
Input

A single line with a single integer, N.
Output

The number of ways to represent N as the indicated sum. Due to the potential huge size of this number, print only last 9 digits (in base 10 representation).
Sample Input

7
Sample Output

6

//贼简单,不加注释了,完全背包再加;#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>const int MAX = 1e9;/*int V;int f[10005]; // 当前的状态,就是最小值int w[10005]; // 物品的价值,就是int v[10005]; // 物品的体积,也就是金币的重量*/int dp[1000005];using namespace std;int main(){    int n, m, k; // V就是总体积,总金额    while(cin >> n){        dp[1] = 1;        for(int i = 2 ; i <= n ; i++)            if(i % 2 == 1)                dp[i] = dp[i-1] % MAX;            else                dp[i] = (dp[i-1] + dp[i/2]) % MAX ;            cout << dp[n] << endl;    }    return 0;}
1 0
原创粉丝点击