动态规划普及组练习

题目描述

有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30,每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。
 

输入

一个整数v,表示箱子容量
一个整数n,表示有n个物品
接下来n个整数,分别表示这n 个物品的各自体积

输出

一个整数,表示箱子剩余空间。
 

样例输入

24 
6  
8  
3
12
7
9
7
#include<bits/stdc++.h>
using namespace std;
int v,n,t[32];
int f[32][20002];

int main()
{
    cin >> v >> n;
    int i,j;
    for(i = 1;i <= n;i++)
        cin >> t[i];
        f[0][0] = 0;
    for(i = 1;i <= n;i++)
        for(j = 1;j <= v;j++)
            if(j >= t[i] && f[i - 1][j - t[i]] + t[i] >= f[i-1][j])
            f[i][j] =  f[i - 1][j - t[i]] + t[i];
            else f[i][j] = f[i-1][j];            
    cout << v - f[n][v];
    return 0;
}

 同类型题目:

https://www.luogu.org/problem/P1060      P1060 开心的金明

实现代码

#include<bits/stdc++.h>
using namespace std;
int n,m,v[27],p[27];
int f[27][30002];
int main()
{
    cin >> n >> m;
    int i,j;
    for(i = 1;i <= m;i++)
    {
        cin >> v[i] >> p[i];
    }
    for(i = 1;i <= m;i++)
        for(j = 1;j <= n; j++)
        {
            if(j >= v[i] && f[i-1][j-v[i]] + v[i]*p[i] > f[i-1][j])
            {
                f[i][j] = f[i-1][j-v[i]] + v[i]*p[i] ;
            }
            else
            {
                f[i][j] = f[i - 1][j];
            }
        }
    cout << f[m][n];
    return 0;
}

 P1064 金明的预算方案

50分代码

#include<bits/stdc++.h>
using namespace std;
int n,m,v[62],p,q[62],w[62];
int f[62][32002];
int main()
{
    cin >> n >> m;
    int i,j;
    for(i = 1;i <= m;i++)
            {
                cin >> v[i] >> p >> q[i];
                w[i] = v[i] * p;
            }
    for(i = 1;i <= m;i++)
    {
        if(q[i])
        {
            w[q[i]] += w[i];
            v[q[i]] += v[i];
            v[i] = 0;
            w[i] = 0;
        }
    }
    f[0][0] = 0;
    for(i = 1;i <= m;i++)
        for(j = 1;j <= n; j++)
        {
            if(j >= v[i] && f[i-1][j-v[i]] + w[i] > f[i-1][j])
            f[i][j] = f[i-1][j-v[i]] + w[i];
            else
            f[i][j] = f[i-1][j];
            
        }
    cout << f[m][n];
    return 0;
}

 

posted @ 2019-07-24 16:25  LizLiz  阅读(125)  评论(0)    收藏  举报