1.打包

/*一个二维01背包
样例输入: 
6 5 4
10 2 2
20 3 2
40 4 3
30 3 3
样例输出:
50 
*/
#include<iostream>
using namespace std;
#include<cstdio>
#define N 381
int f[N][N];
int n,V,G;
struct Wp{
    int t,v,g;
};
Wp wp[N];
void input()
{
    scanf("%d%d%d",&V,&G,&n);
    for(int i=1;i<=n;++i)
    scanf("%d%d%d",&wp[i].t,&wp[i].v,&wp[i].g);
}
void dp()
{
    for(int i=1;i<=n;++i)
      for(int j=V;j>=wp[i].v;--j)
        for(int k=G;k>=wp[i].g;--k)
        f[j][k]=max(f[j][k],f[j-wp[i].v][k-wp[i].g]+wp[i].t);
    cout<<f[V][G]<<endl;
}
int main()
{
    input();
    dp();
    return 0;
}
View Code

相关文章:

  • 2022-02-17
  • 2021-10-31
  • 2021-06-01
  • 2022-01-03
  • 2022-12-23
  • 2021-12-15
  • 2022-12-23
  • 2021-05-22
猜你喜欢
  • 2022-12-23
  • 2022-01-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-16
  • 2022-12-23
相关资源
相似解决方案