mirror of
https://github.com/huihut/interview.git
synced 2024-03-22 13:10:48 +08:00
35 lines
911 B
Markdown
35 lines
911 B
Markdown
|
|
|||
|
## 背包问题
|
|||
|
|
|||
|
### 代码
|
|||
|
|
|||
|
[背包问题代码](pack.cpp)
|
|||
|
|
|||
|
### 问题说明
|
|||
|
|
|||
|
有N件物品和一个容量为V的背包。
|
|||
|
|
|||
|
第i件物品的重量是w[i],价值是v[i]。
|
|||
|
|
|||
|
求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,
|
|||
|
|
|||
|
且价值总和最大。
|
|||
|
|
|||
|
### 功能说明
|
|||
|
|
|||
|
本程序用动态规划的思想解决了背包问题,并用了两种算法:
|
|||
|
迭代法、递归法。在迭代法中实现了打印背包问题的表格。
|
|||
|
|
|||
|
### 代码简述
|
|||
|
|
|||
|
通过用户输入数据,程序输入检测,动态分配空间,选择算法,
|
|||
|
用动态规划的思想求解背包问题。
|
|||
|
|
|||
|
#### 迭代法:
|
|||
|
通过遍历n行W列,迭代每行每列的值,并把最优解放到
|
|||
|
n行(在数组中为第n+1行)W列(在数组中为第W+1列)中。
|
|||
|
|
|||
|
#### 递归法:
|
|||
|
通过每次返回前i个物品和承重为j的最优解,
|
|||
|
递归计算总背包问题的最优解。
|