#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int f[101][101];
int c[2000];
int w[2000];
int v[2000];
int main()
{
memset(f,127,sizeof(f));
f[0][0]=0;
int n,m,i,j,k,q;
scanf("%d%d%d",&m,&n,&q);
for(i=1;i<=q;i++)
scanf("%d%d%d",&v[i],&w[i],&c[i]);
for(i=1;i<=q;i++)
{
for(j=m;j>=0;j--)
{
for(k=n;k>=0;k--)
{
int t1=j+v[i];
int t2=k+w[i];
if(t1>m)t1=m;
if(t2>n)t2=n;
if(f[t1][t2]>f[j][k]+c[i])f[t1][t2]=f[j][k]+c[i];
}
}
}
cout<<f[m][n]<<endl;
return 0;
}
1271:【例9.15】潜水员
最新推荐文章于 2024-02-01 21:27:45 发布
本文展示了一个使用C++实现的动态规划算法案例,通过三维数组进行状态转移,解决了一个涉及物品价值、重量和成本的多维背包问题。算法通过预处理数组初始化,避免了重复计算,提高了效率。
1212

被折叠的 条评论
为什么被折叠?



