加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
完全背包问题.cpp 1.38 KB
一键复制 编辑 原始数据 按行查看 历史
// #include<iostream>
// using namespace std;
// const int N=1010;
// int n,m,v[N],w[N],f[N][N];
// int main()
// {
// cin>>n>>m;
// for(int i = 1 ; i <= n ;i ++)
// {
// scanf("%d %d",&v[i],&w[i]);
// }
// for(int i=1;i<=n;i++)
// {
// for(int j=0;j<=m;j++)
// {
// for(int k=0;k*v[i]<=j;k++)
// f[i][j]=max(f[i][j],f[i-1][j-k*v[i]]+k*w[i]);//朴素二维数组写法(容易tle)
// }
// }
// printf("%d\n",f[n][m]);
// return 0;
// }
// #include<iostream>
// using namespace std;
// const int N=1010;
// int n,m,v[N],w[N],f[N][N];
// int main()
// {
// cin>>n>>m;
// for(int i = 1 ; i <= n ;i ++)
// {
// scanf("%d %d",&v[i],&w[i]);
// }
// for(int i=1;i<=n;i++)
// {
// for(int j=0;j<=m;j++)
// {
// f[i][j]=f[i-1][j];
// if(j>=v[i]) f[i][j]=max(f[i][j],f[i][j-v[i]]+w[i]);//二维数组优化写法
// }
// }
// printf("%d\n",f[n][m]);
// return 0;
// }
#include<iostream>
using namespace std;
const int N = 1010;
int f[N];
int v[N],w[N];
int main()
{
int n,m;
cin>>n>>m;
for(int i = 1 ; i <= n ;i ++)
{
cin>>v[i]>>w[i];
}
for(int i = 1 ; i<=n ;i++)
for(int j = v[i] ; j<=m ;j++)
{
f[j] = max(f[j],f[j-v[i]]+w[i]);//一维数组优化写法
}
cout<<f[m]<<endl;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化