Hust_YangXian
Hust_YangXian
## 网络流建模 周尚彦
## 线性规划与网络流_曹钦翔
## 2-SAT问题_未知作者
## 第 15 章 面向对象程序设计 面向对象程序设计的核心思想是: 数据抽象, 继承, 和动态绑定; - 数据抽象: 将类的接口与实现分离; - 继承: 可以定义相似的类型并对其相似的关系建模; - 动态绑定: 程序执行时才选择函数的版本, 也称作运行时绑定; 继承: 基类, 派生类 #### 虚函数 - 某些函数, 基类希望它的派生类各自定义适合自己的版本, 派生类必须对基类的内部的所有虚函数进行重定义, 声明的时候加上virtual; -...
## 0 1 背包 给你一个可装载重量为W的背包和N个物品,每个物品有重量和价值两个属性。其中第i个物品的重量为wt[i],价值为val[i],现在让你用这个背包装物品,最多能装的价值是多少? **第一步要明确两点,「状态」和「选择」。** 所以状态有两个,就是「背包的容量」和「可选择的物品」。 选择就是「装进背包」或者「不装进背包」嘛 ```python for 状态1 in 状态1的所有取值: for 状态2 in 状态2的所有取值: for ... dp[状态1][状态2][...] = 择优(选择1,选择2...) ``` **第二步要明确dp数组的定义。** 当前有两个状态,所以一般采用二维数组; dp[i][w]的定义如下:对于前i个物品,当前背包的容量为w,这种情况下可以装的最大价值是dp[i][w]。 根据这个定义,我们想求的最终答案就是dp[N][W]。base case 就是dp[0][..] =...
## 0-1背包问题的变体 状态压缩  给一个可装载重量为sum/2的背包和N个物品,每个物品的重量为nums[i]。现在让你装物品,是否存在一种装法,能够恰好将背包装满?