自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 python 单源最短路径

'''带权有向图 G=(V,E) 每条边的权为非负数给定V中的一个顶点,称为源计算从源到其他各顶点的最短路长度'''import numpy as npdef Dijkstra(n, v, dist, prev, c): #s 集合包含已知的最短路径的顶点 s = np.zeros(n, bool) #dist 记录从源到其他顶点的最短路径长度 prev 记录相应的最短路径 c[i][j]表示边(i,j)的权 s[v] = True for i in r.

2021-09-11 11:02:08 361

原创 python 哈夫曼编码

'''Huffman编码根据每个字母出现的频率,构造二叉树,写出对应的字母的编码'''import queueimport heapq#构造节点类(频率,字符,左儿子,右儿子,编码)class node: def __init__(self, f = None, char = None, left = None, right = None, code = None): self.f = f self.char = char self.l.

2021-09-10 09:10:17 602

原创 python 0-1背包问题

你的背包,那么多年还没烂'''0, 1背包问题物品i 的重量是Wi,价值为Vi背包容量为c,如何放入物品使背包中物品的总价值最大'''def Knapsack(v, w, c, n, m): for j in range(w[n], c+1): m[n][j] = v[n] for i in range(n-1, 1, -1): jmax = min(w[i]-1, c) for j in range(jmax+1):

2021-09-08 14:17:34 202

原创 python 凸多边形的最优三角剖分

'''凸多边形最优三角剖分'''# 权值函数,返回三角形的权值def w(a, b, c): global weight return weight[a][b]+weight[b][c]+weight[a][c]#计算最优值def MinWeightTriangulation(n, t, s): for r in range(2, n+1): for i in range(1, n-r+2): j = i+r-1 .

2021-09-04 17:41:05 661

原创 python 最大字段和(三种算法)

'''给定n个整数组成的序列,求该序列的字段和的最大值1.简单算法2.分治算法3.动态规划算法三种方法,对应三个函数'''#1.简单算法def MaxSum(n, a): sum = 0 besti, bestj = 0, 0 for i in range(n): thisSum = 0 for j in range(i, n): thisSum += a[j] if thisSum .

2021-09-01 11:48:01 1174

原创 python 最长公共子序列

b[i][j]的三种情况:b[i][j] = 1 x[i]和y[j]的最长公共子序列是由x[i-1]和y[j-1]的最长公共子序列在尾部加上x[i]得到(打印,朝左上方找)b[i][j] = 2x[i]和y[j]的最长公共子序列与x[i-1]和y[j]的最长公共子序列相同(朝上面找)b[i][j] = 3 x[i]和y[j]的最长公共子序列与x[i]和y[j-1]的最长公共子序列相同(朝左边找)'''最长公共子序列X = {A, B, C, B, D, A, B}Y = {B, D.

2021-08-27 11:02:44 249

原创 python 矩阵连乘

'''矩阵连乘问题A1 A2 A3 A4 A5 A6...相乘,求计算量最小的加括号的方式m[i][j] :Ai到A[j]的计算量s[i][j] :Ai到A[j] 应该加括号的地方'''def MatrixChain(p, n, m, s): for r in range(2, n+1): for i in range(1, n-r+2): j = i+r-1 m[i][j] = m[i+1][j] + p[i-1]*p[.

2021-08-26 14:59:33 1353

原创 python 合并排序(非递归)

'''先 2 2 排序再 4 4 排序依次类推'''def mergeSort(a, n): s = 1 b = [i for i in range(n)] # print(b) while(s < n): mergePass(a, b, s, n) # 合并到数组b s += s mergePass(b, a, s, n) # 合并到数组a s += sde.

2021-08-25 10:07:14 263

原创 python 合并排序(递归)

# 递归合并排序global n #统计递归的次数n = 0def MergeSort(A): global n n = n+1 if len(A) <= 1: return A middle = len(A)//2 left = [A[i] for i in range(middle)] right = [A[i] for i in range(middle, len(A))] left = MergeSo.

2021-08-25 10:04:01 150

原创 python 快速排序

'''快速排序1.分解 以A[p]为基准,小的放左边,大的放右边2.递归 左,右两部分进行分解3.合并 左半部分 + A[p] + 右半部分此代码使用 p = 0'''def quickSort(a, p, r): if p < r: q = Partition(a, p, r) #分解 quickSort(a, p, q-1) #左半部分排序 quickSort(a, q+1, r.

2021-08-25 09:46:15 55

原创 python 二分搜索

输入从大到小排列好的一行数,再输入想要查找的数x,输出x所在的位置'''二分搜索已经排好序的一组数 寻找x 的位置'''def BinarySearch(A, x, n): left = 0 right = n-1 while(left < right): middle = (left + right)//2 if(x == A[middle]): # X = A[middle] 返回中间数 re.

2021-08-25 09:36:55 64

原创 python 全排列问题

'''全排列问题输入123输出123, 132, 213, 231, 312, 321'''def perm(A, k, m): if k == m: for i in range(m): print(A[i], end=" ") if i == m-1: print() else: for i in range(k, m): A[i], A[k.

2021-08-25 09:10:50 324

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除