
紫书第七章
文章平均质量分 87
flora715_hss
纸飞机,载着岁月飞散在风里.
所有羁绊都归于平淡,誓言悉数服从命运的安排.
——时间划过风的轨迹,那个少年,还在等你.
展开
-
【暖*墟】#全排列# 解答树算法与next_permutation函数
【解答树】假设序列为{1,2,3,4},形成全排列。解答树显示出了递归函数的调用过程。这棵树和前面介绍过的二叉树不同。第0层(根)结点有n个子结点,第1层结点各有n-1个子结点,第2层结点各有n-2个子结点,第3层结点各有n-3个子结点,……,第n层结点都没有子结点(即都是叶子),而每个叶子对应于一个排列,共有n!个叶子。由于这棵树展示的是从“什么都没做”逐步生成完整解的过程,因此将其称为解答树。...原创 2018-07-09 11:28:31 · 863 阅读 · 1 评论 -
【暖*墟】#子集生成# 的方法
给定一个集合,枚举所有可能的子集。为了简单起见,本节讨论的集合中没有重复元素。1 增量构造法第一种思路是{ 递归、一次选出一个元素放到集合中 },程序如下:void print_subset(int n, int* A, int cur) { for(int i = 0; i < cur; i++) printf("%d ", A[i]); //打印当前集合 prin...原创 2018-07-09 11:58:53 · 138 阅读 · 0 评论 -
【暖*墟】#dfs回溯法# 八皇后问题与延伸
无论是排列生成还是子集枚举,前面都给出了两种思路:递归构造和直接枚举。直接枚举法的优点是思路和程序都很简单,缺点在于无法减小枚举量——必须生成所有可能的解,然后检查。另一方面,在递归构造中,生成和检查过程可以有机结合起来,从而减少不必要的枚举。这就是本节的主题——回溯法。回溯法的应用范围很广,只要能把待求解的问题分成不太多的步...原创 2018-07-09 16:38:47 · 195 阅读 · 0 评论 -
【暖*墟】#DFS# 深搜技巧与优化
目录一. DFS的实现【需要注意的地方】二. 剪枝技巧的实现1.可行性剪枝。2.最优性剪枝。3.记忆化搜索。4.搜索顺序剪枝。一. DFS的实现int dfs(int t){ if(满足输出条件) //dfs出口 { 输出解; } else { for(int i=1;i<=尝试方...原创 2018-07-09 17:09:08 · 660 阅读 · 1 评论 -
【暖*墟】#迭代加深# 埃及分数 + 编辑书稿
【迭代加深搜索】迭代加深搜索经常用于理论上解答树深度上没有上界的问题,这类问题通常要求出满足某些条件时的解即可。比如在“埃及分数”问题中要求将一个分数a/b分解成为若干个形如1/d的加数之和,而且加数越少越好,如果加数个数相同,那么最小的分数越大越好。下面总结一下该方法的一般流程:(1)概述:通过限制每次dfs的最大深度进行的...原创 2018-07-10 15:18:32 · 176 阅读 · 0 评论 -
【暖*墟】#迭代加深# 快速幂运算次数 uva1374
#include <bits/stdc++.h>using namespace std;typedef unsigned long long ll;/*【快速幂计算】(UVa1374)输入正整数n(1≤n≤1000),问最少需要几次乘除法可以 { 从x得到x^n } ?计算过程中x的指数应当总是正整数。 *//*【分析】考虑迭代加深搜索。当前状态是已经得到的指数集合,...原创 2018-07-10 15:58:58 · 184 阅读 · 0 评论 -
【暖*墟】 #BFS# 广搜技巧与优化
BFS 广度优先搜索(队列)目录一. 基本实现二. 双端队列普通队列用于边权为定值的最短路搜索。 双端队列可以进行边权为1/0的最短路搜索。【例题】洛谷 p2243 电路维修三. Hash判重1、哈希表的特征 2、哈希表的实现方法:拉链法3、Hash的应用4、散列法【Hash表的常见构造方法】【例题】洛谷 p2730 魔板一....原创 2018-08-31 14:48:31 · 883 阅读 · 0 评论