命令模式
...
状态模式
...
原型模式
...
建造者模式
...
工厂模式
...
策略模式
策略模式 classDiagram class Context { -strategy: Strategy +setStrategy(strategy: Strategy) +executeStrategy() } class Strategy { <<interface>> +execute(data) } class ConcreteStrategyA { +execute(data) } class ConcreteStrategyB { +execute(data) } Context --> Strategy : uses Strategy <|-- ConcreteStrategyA Strategy <|--...
设计模式
...
面向对象设计原则
...
背包问题
背包问题 背包问题是一类经典的动态规划问题,可以简单(数据量不大时)也可以很复杂(数据量很大时)。下面介绍几种典型背包问题,可以当做模板。 01背包问题 给定n个物品和一个容量为v的背包,求背包能装下的最大价值。特点是每个物品最多只能选择一次。 思考过程: # include <bits/stdc++.h>using namespace std;int main() { int N, V; cin >> N >> V; vector<int> volumes(N + 1), values(N + 1); for (int i = 1; i <= N; i++) { cin >> volumes[i] >> values[i]; } // 先写最好想的多维动态规划——观察写好的多维dp,其实可以优化到一维,因为好多历史状态并没有用上 // 核心历史状态是当前容量j vector<int> dp(V +...