自定义博客皮肤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 np def 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 385

原创 python 哈夫曼编码

''' Huffman编码 根据每个字母出现的频率,构造二叉树,写出对应的字母的编码 ''' import queue import 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 636

原创 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 226

原创 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 721

原创 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 1272

原创 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 270

原创 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 1384

原创 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 += s de.

2021-08-25 10:07:14 293

原创 python 合并排序(递归)

# 递归合并排序 global n #统计递归的次数 n = 0 def 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 167

原创 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 74

原创 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 82

原创 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 358

空空如也

空空如也

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

TA关注的人

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