数据结构与算法
__IProgrammer
这个作者很懒,什么都没留下…
展开
-
深度优先搜索之全排列
题目:给定一个字符串"abcde",一个正整数M,求用字符串种M个字符最多可以组成多少种组合?运用数学思想,很容易算出有多少种,如M=1,RES=5,M=2,RES=20;思考当前应该怎么做?从字符串中取出一个,从剩下的字符串中出去一个~~~~~~M = 2 #M位字符串my_str = "abcde"str_list = [x for x in my_str]used_...原创 2018-08-04 18:54:39 · 237 阅读 · 0 评论 -
广度优先搜索迷宫问题
用二维数据构造一个迷宫,求到某点的最短路径。思路:到达每点后,依次将下一步可达点放入一个数组,将走过的点放入一个路过数据,每次循环,遍历完一个点,指针后移,遍历后面的点。map_list = [ [0,0,0,0,0], [0,0,1,0,0], [0,0,0,1,0], [0,0,1,0,1], [0,1,0,2,0], [0,0,0,0...原创 2018-08-04 22:49:19 · 1197 阅读 · 0 评论 -
深度优先搜索之迷宫问题
思路:确保在该点应该做什么,要做什么条件判断import copy#[0,0] ->[0,1] x+0 y+1map_list = [ [0,0,0,0,0], [0,0,1,0,0], [0,0,0,1,0], [0,0,1,0,1], [0,1,0,2,0], [0,0,0,0,0], [0,1,1,0,0]]min...原创 2018-08-04 22:55:02 · 939 阅读 · 0 评论 -
小岛问题最多可达点
广度优先搜索,Python代码如下,搞清楚二维数组里的横纵坐标,这类题很简单:class Queue(object): def __init__(self): self.items = [] self.head = 0 self.tail = 0 def append(self,node): self.ite...原创 2018-08-05 22:37:41 · 345 阅读 · 0 评论 -
树的遍历
树的结构如图:广度优先搜索:class Queue(object): def __init__(self): self.items = [] self.head = 0 self.tail = 0 def append(self,node): self.items.append(node) ...原创 2018-08-06 10:28:34 · 136 阅读 · 0 评论 -
图的遍历-最短路径-深度优先搜索
上传图片失败。。。深度优先搜索:#地图# map_list[0][1] 代表 1 到 2 的距离是 2map_list = [ [0,2,-1,-1,10], [-1,0,3,-1,7], [4,-1,0,4,-1], [-1,-1,-1,0,5], [-1,-1,3,-1,0],]min = 9999#已走点book_list = [...原创 2018-08-06 16:40:40 · 2614 阅读 · 0 评论 -
迪杰斯特拉算法-单源最短路径
采用广度优先搜索思想,对有向赋权图寻找最短路径。 该算法对于不含负权的有向图来说,是目前已知的最快的单源最短路径算法。 时间复杂度:O(n^2) 基本原理:不断为为每个顶点 v 保留目前为止所找到的从s到v的最短路径 from cmath import inf"""每次找到离源点最近的一个点,以该点为中心进行扩展,最终得到源点到其余所有点的最短路径1.将所有定点分为两部分...原创 2018-08-07 13:13:25 · 543 阅读 · 0 评论