专题1:递归运用初步
对递归的介绍,请看这里。
递归的应用总是和深度优先搜索联系到一起。这里先请看两篇有关的文章,一篇中文的,一篇英文的。
看了这两篇文章,应当对深度优先的基本概念有些了解。请结合样例程序仔细体会8皇后问题的解法。这是很经典的深度优先搜索问题。
以下是一些问题的样例程序:
整数拆分
组合问题
全排列
八皇后问题
理解这些程序若有困难,我们会详细讲解它们。理解后,请自己再编一遍。
下面是一些有关它们的练习。
关于这方面的题目很多,我们会不断添加。
Group Z1:递归和深度优先搜索初步
Group 11: 搜索初步
深度优先搜索和广度优先搜索是属于常用的搜索技术。前者用到递归,后者涉及队列。
深度优先搜索对于解决某些问题并不一定是最好的,但很容易实现,有时也十分有效,它的难点在于如何剪枝优化。出现在递归初步中的题目可以算是深搜的一种。
广度优先搜索技术的结构相对固定,但节点的判重也是个难点。由于时间效率的原因,广度优先搜索运用得更为广泛。
下面是关于它们的一些练习。
编号 来源 题号 标题
11.0 ZJU 2416 Open the Lock
广度优先。(样例程序)
11.1 ZJU 1091 Knight Moves 最简单的广度优先搜索问题,但包括了这类方法的所有要素。
11.2 ZJU 1005 Jugs 典型的广度优先
11.3 ZJU 1649 Rescue 广度优先在迷宫问题中的应用
11.4 ZJU 1002 Fire Net 这些都是可以运用深度优先的题目。有些需要很好的剪枝。
11.5 ZJU 1003 Crashing Balloon
11.6 ZJU 1004 Anagrams by Stack
Group 13: 广度优先搜索
下面是关于广度优先搜索(BFS)的一些练习。
编号 来源 题号 标题
13.0 ZJU 1438 Asteroids! 三维迷宫,想想如何控制方向
13.1 ZJU 2050 Flip Game 可以尝试一下位运算
13.2 ZJU 2081 Mission Impossible 可以用BFS+DFS
13.3 ZJU 1310 Robot 进阶,稍难一点
13.4 ZJU 1671 Walking Ant
13.5 ZJU 1940
Dungeon Master
13.6 ZJU 1103 Hike on a Graph
13.7 ZJU 1358 Moving Object Recognition
13.8 ZJU 1217 Eight 难题,注意状态的表示与哈希
13.9 ZJU 1227 Free Candies
13.10 ZJU 1505 Solitaire
13.11 ZJU 1361 Holedox Moving
Group 12: 深度优先搜索
下面是关于深度优先搜索(DFS)的一些练习。
编号 来源 题号 标题
12.0 PKU 1256 Anagram
生成不重复排列
12.1 ZJU 1711 Sum It Up 生成不重复组合
12.2 ZJU 2412 Farm Irrigation 初步,有的需要剪枝
12.3 ZJU 1694 Shredding Company
12.4 ZJU 1457 Prime Ring Problem
12.5 ZJU 1204 Additive equations
12.6 ZJU 2192 T-shirt Gumbo 进阶,有序搜索与剪枝
12.7 ZJU 1909 Square
12.8 ZJU 1987 Vase Collection
12.9 ZJU 1937 Addition Chains
12.10 ZJU 1984 Genetic Code
12.11 ZJU 2110 Tempter of the Bone
12.12 ZJU 1179 Finding Rectangles 难题,需要很好搜索策略和剪枝技巧
12.13 ZJU 1411 Anniversary
12.14 ZJU 1008 Gnome Tetravex
12.15 ZJU 1499 Increasing Sequences
Group 14: 图--遍历(Graph Traversal)、传递闭包(Transitive Closure)
编号 来源 题号 标题
14.0 ZJU 1221 Risk 用BFS也可以解决最短路径问题
14.1 ZJU 2165 Red and Black 基于网格的连通性分析
14.2 ZJU 1589 Professor John 传递闭包,也可以用DFS
14.3 ZJU 1085 Alien Security
Group 15: 图--拓扑排序(Topological Sort)、关节点(Articulation Point)
编号 来源 题号 标题
15.0 ZJU 1060 Sorting It All Out
15.1 ZJU 1119 SPF
15.2 ZJU 1311 Network
Group 16: 图--最小生成树(Minimum Spanning Tree)
编号 来源 题号 标题
16.0 ZJU 1406 Jungle Roads
16.1 ZJU 1203 Swordfish
16.2 ZJU 1542 Network
16.3 ZJU 1586 QS Network 要注意节点权值
16.4 ZJU 1372 Networking 要注意重复边
16.5 ZJU 1914 Arctic Network 想想为什么可以用最小生成树?
16.6 ZJU 2158 Truck History 想想如何转化为最小生成树?
16.7 ZJU 2048 High Ways 基于连通分量的最小生成树
16.8 ZJU 1718 Building a Space Station
16.9 PKU 1258 Agri-Net
Group 17: 图--最短路径(Shortest Path)
编号 来源 题号 标题
17.0 ZJU 1053 FDNY to the Rescue!
17.1 ZJU 1609 Equivalence
17.2 ZJU 1082 Stockbroker Grapevine
17.3 ZJU 1655 Transport Goods 边权值有些特别
17.4 ZJU 1092 Arbitrage
17.5 ZJU 1967 Fiber Network 想想如何利用Floyd三重循环?
17.6 ZJU 1456 Minimum Transport Cost 有些难度的最短路径题
17.7 ZJU 2008 Invitation Cards 带最小堆的Dijkstra
17.8 ZJU 1765 Which Way Do I Go? 综合题,比较复杂
17.9 ZJU 1232 Adventure of Super Mario
Group 18: 图--回路问题(Euler Path & Hamilton Tour)
编号 来源 题号 标题
18.0 ZJU 1105 FatMouse's Tour
18.1 ZJU 2016 Play on Words 可转化为判定欧拉路的存在性
18.2 ZJU 1130 Ouroboros Snake 可以转化为欧拉路
18.3 SCU 1286 First Love 可以转化为欧拉路
Group 19: 图--二部图匹配(Bipartite Matching)
编号 来源 题号 标题
19.0 ZJU 1140 Courses
19.1 ZJU 1137 Girls and Boys
19.2 ZJU 1157 A Plug for UNIX
19.3 ZJU 1364 Machine Schedule
19.4 ZJU 1197 Sorting Slides
19.5 ZJU 1525 Air Raid
19.6 ZJU 1059 What's In a Name
19.7 ZJU 1516 Uncle Tom's Inherited Land
19.8 ZJU 1654 Place the Robots
19.9 ZJU 1509 Family
Group 20: 图--网络流(Network Flow)
编号 来源 题号 标题
20.0 PKU 1273 Drainage Ditches 典型的网络最大流
20.1 ZJU 1734 Power Network 可转化为网络最大流
Group 21: 图--差分约束(Difference Constraints)
编号 来源 题号 标题
21.0 ZJU 1260 King
21.1 ZJU 1420 Cashier Employment
21.2 ZJU 1455 Schedule Problem
21.3 ZJU 1508 Intervals
Group 22: 图--其它
编号 来源 题号 标题
22.0 ZJU 1015 Fishing Net 弦图判定
22.1 ZJU 1492 Maximum Clique
求最大团,经典NP hard
22.2 ZJU 1576 Marriage is Stable 稳定婚姻,延迟认可算法