每天坚持做算法题,熟悉基本的套路,巩固语言基础,总结经验记下所学所想。
2018-04-16
P294 输出所有排列
HINT
递归调用
代码
1 | // 字典序输出1-n的全排列 |
2018-04-18
P298 子集生成
HINT
增量构造法、位向量法、二进制法
代码
1 | /** |
2018-04-19
八皇后问题
HINT
使用book数组判重
代码
1 | const int maxn = 100; |
P370 和为0的4个值
HINT
hash降低复杂度
代码
1 | int main(){ |
P372 Gergovia的酒交易
HINT
扫描法
代码
1 | int main( ) { |
2018-04-21
两个有序数组求中位数
代码
1 | // 双指针 |
2018-04-23
P381 全部相加
HINT
huffman编码的建立过程
代码
1 |
|
回忆:huffman编码
1 | void Huffman::HuffmanTree(element huffTree[ ], int w[ ], int n ) |
P406 记忆化搜索与递推
HINT
避免递归搜索时重复执行操作
代码
1 | //思路 |
2018-04-24
P265 给任务排序
HINT
dfs判断是否不存在环
代码
1 | int c[maxn]; |
2018-04-25
P266 欧拉回路
HINT
设置标记
代码
1 | void elur(int cur){ |
2018-05-03
P416 城市里的间谍
HINT
DAG动态规划问题,时间是单向的。
代码
1 | int main(){ |
2018-05-04
P422背包问题
HINT
固定起点的DAG最长路径问题,引入层数
代码
1 | // d(i, j)表示“把第i, i+ 1 , i+2,…, n个物品装到容量为j的背包中的最大总重量”。 |
P420 单向TSP
HINT
多阶段决策的最优化问题
代码
1 | int main() |