【动态规划】Problem 2 可爱迷人的香穗子

来源:互联网 发布:淘宝店铺项目规划方案 编辑:程序博客网 时间:2024/06/10 09:34

  香穗子正准备参加一个晚会!现在她准备好好打扮一下,她准备戴上耳环,手镯,项链..等等一些装饰品,这里要说明的是,香穗子不是花瓶….

  香穗子最多能承受W的重量,每个装饰品也有各自的重量和美观值

  现在香穗子要怎么打扮,美观值的和最大

 

输入:

       第一行两个数,w,n

       接下来n行,每行两个数,表示物品的信息,第一个数是物品的重量,第二个数是物品的美观值

 

输出:

       表示香穗子最多能得到的最大美观值和

 

Sample Input

       10 2

       7 8

       8 7

 

Sample Output

       8

 

数据范围:

       n<=100,w<=10000

       答案保正小于Maxlongint


01背包

#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;int W, N;int F[10005];struct rec{    int cost;    int val;}Project[105];void init_file(){    freopen("2.in", "r", stdin);    freopen("2.out", "w", stdout);}void read_data(){    scanf("%d%d", &W, &N);    for(int i = 0; i < N; i++)    {        int cost;        int val;        scanf("%d%d", &cost, &val);        Project[i].cost = cost;        Project[i].val = val;    }}void work(){    for(int i = 0; i < N; i++)    {        for(int cost = W; cost >= Project[i].cost; cost--)        {            F[cost] = max(F[cost], F[cost - Project[i].cost] + Project[i].val);        }    }    printf("%d\n", F[W]);}int main(){    init_file();    read_data();    work();    return 0;}



原创粉丝点击