【C/C++】01背包问题/动态规划
2024-10-16 21:42:47
按小蓝书上写的大数据情况下没过,按解答区一个大佬的修改了过了
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 计算01背包问题的结果
* @param V int整型 背包的体积
* @param n int整型 物品的个数
* @param vw int整型vector<vector<>> 第一维度为n,第二维度为2的二维数组,vw[i][0],vw[i][1]分别描述i+1个物品的vi,wi
* @return int整型
*/
int knapsack(int V, int n, vector<vector<int>>& vw) {
// write code here
// 创建dp数组
vector <vector<int>> dp;
vector <int> tmp;
tmp.insert(tmp.begin(), V + 1, 0);
for (int i = 0; i <= n; i++)
{
dp.push_back(tmp);
}
for (int i = 1; i <= n; i++)
{
for(int j = 1; j <= V; j++)
{
if (j < vw[i-1][0])
{
dp[i][j] = dp[i-1][j];
}
else
{
dp[i][j] = max(dp[i-1][j], dp[i-1][j-vw[i-1][0]] + vw[i-1][1]);
}
}
// for (int j = vw[i-1][0]; j <= V; j++)
// {
// dp[i][j] = max(dp[i-1][j], dp[i-1][j-vw[i-1][0]] + vw[i-1][1]);
// }
}
int maxx = 0;
for (int i = 1; i <= V; i++)
{
maxx = max(dp[n][i], maxx);
}
return maxx;
}
};
int main()
{
vector<vector<int>> arr {{1,3},{10,4}};
int v = 10, n = 2;
Solution solution;
cout << solution.knapsack(v, n, arr) << endl;
system("pause");
}
最新文章
- PMP 第三章 单个项目的项目管理标准
- DataTable中如何去除重复的项【转】
- 代理和 block 传值的使用
- 火狐浏览器对border-radius的渲染问题
- 01背包dp+并查集 Codeforces Round #383 (Div. 2)
- Linux 文件操作命令-Linux基础环境命令学习笔记
- ubuntu18.04安装搜狗拼音
- Mybaits-plus实战(三)
- python 之C3算法
- 完整的SOPC开发流程体验
- Android 项目中文件夹作用(res文件夹详细介绍)
- linux 安装MySql 5.7.20
- Eclipse安装fat jar的两种方式
- cdoj1638 红藕香残玉簟秋,轻解罗裳,独上兰舟。
- Java笔记之Scanner先读取一个数字,在读取一行字符串方法分析
- 如何运行Python程序
- 判断表单中是否含有disabled属性
- Linux下find命令参数及用法详解
- sqlserver 出现sql被锁时,查看加锁和被锁的sql
- Rust 1.7.0 macro宏的复用 #[macro_use]的使用方法
热门文章
- flask gevent
- 菜鸟Markdown笔记,看这个就够了
- C 语言基础,来喽!
- Timer定时器的使用
- 【知识详解】JAVA基础(秋招总结)
- 卸载.net 5.0后使用dotnet提示Found .NET Core SDK
- 进击的 Ansible(二):如何快速搞定生产环境 Ansible 项目布局?
- stat命令的实现-mysate(必做)
- CF1264D1 Beautiful Bracket Sequence (easy version)
- Codeforces 590E - Birthday(AC 自动机+Dilworth 定理+二分图匹配)