摘要: int search(int t) { if(满足输出条件) { 输出解; } else { for(int i=1;i<=尝试方法数;i++) if(满足进一步搜索条件) { 为进一步搜索所需要的状态打上标记; ... 阅读全文
posted @ 2018-03-14 20:12 soulwinter 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 其实已经在前面题解有提及,这里专门开一期。 邻接矩阵 适用于 Floyd 算法(Floyd 复杂度 O(n^3) ) 邻接表 阅读全文
posted @ 2018-02-12 19:35 soulwinter 阅读(206) 评论(0) 推荐(0) 编辑
摘要: Dijkstra 可以用邻接表存图,时间复杂度 O[(M+N)logN] 在最坏的情况下,比 O(n^2) 还慢,但一般不会出现这种情况。 *适用于求一个顶点到其它点的最短路径 *不能解决负权边的问题 待更 阅读全文
posted @ 2018-02-12 19:29 soulwinter 阅读(142) 评论(0) 推荐(0) 编辑
摘要: (只是先存着没啥用 阅读全文
posted @ 2018-02-12 19:23 soulwinter 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 题目描述 从前,在一个王国中,在n个城市间有m条道路连接,而且任意两个城市之间至多有一条道路直接相连。在经过一次严重的战争之后,有d条道路被破坏了。国王想要修复国家的道路系统,现在有两个重要城市A和B之间的交通中断,国王希望尽快的恢复两个城市之间的连接。你的任务就是修复一些道路使A与B之间的连接恢复 阅读全文
posted @ 2018-02-11 10:32 soulwinter 阅读(162) 评论(0) 推荐(0) 编辑
摘要: *基本思想:传递闭包 所谓传递性,可以这样理解:对于一个节点i,如果j能到i,i能到k,那么j就能到k。求传递闭包,就是把图中所有满足这样传递性的节点都弄出来,计算完成后,我们也就知道任意两个节点之间是否相连。 初始化 1. 将不可以直接到达的距离(map[i][j])设为 inf (0x3f3f3 阅读全文
posted @ 2018-02-11 09:36 soulwinter 阅读(266) 评论(0) 推荐(0) 编辑
摘要: (特殊的无向图) *若有 n 节点的图,即存在(n-1)条连接图的边,把这些点连起来,恰好这些点可以联通。 表示方法 父亲节点表示法 儿子节点表示法 无向图(参考图1) 左儿子右兄弟(树转二叉树) 1.父亲节点表示法 建立 father 数组:fa[n] fa[某节点]=父亲的编号( root 不存 阅读全文
posted @ 2018-02-10 21:48 soulwinter 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 图(分为“无向图”与“有向图”) *树也是特殊的无向图 由顶点与边(有长度)组成。 *无向图可看为“双向有向图”。 图的两种表示方法 1. 邻接矩阵 规则:若 a 能直接到达 b,则第 a 行 b 列的距离即为所填值。 若不能直接到达,则为 -1 或 +inf。 特别的,自己到自己距离为 0. *若 阅读全文
posted @ 2018-02-10 21:31 soulwinter 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 使用 typedef 可以使结构体使用前不需要加 struct 阅读全文
posted @ 2018-02-01 11:50 soulwinter 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 关于读取 scanf() 读取到空格自动停止 getchar() 读取结束返回 EOF (整型) e.g. 这样如果多次输入所得结果是输入个数*1 遇到 while(~scanf("%d",&n)) while(~scanf("%d",&n)) <=> while(scanf("%d",&n)!=E 阅读全文
posted @ 2018-01-30 08:52 soulwinter 阅读(103) 评论(0) 推荐(0) 编辑