自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【无标题】

total_cost += merge_cost - 1 # 减1是因为我们关注的是比较次数,而合并后的新节点不计入比较。return total_cost # 这里返回的是所有合并操作所需的总比较次数(包括最后一次“虚拟”的合并操作,但它是正确的)# 累计总比较次数(注意:这里merge_cost本身就是比较次数,因为每次合并都减少了一个序列)sequences = [[3], [2, 4], [ 6, 7]] # 示例序列(已排序)# 计算合并后的长度(比较次数)# 将合并后的长度加入堆中。

2024-11-26 09:27:25 427

原创 n皇后分支限界算法实现

board[row] = -1 # 标记为未放置皇后,也可以使用其他方式来表示。print(f"共有 {num_solutions} 个解决方案。# 放置皇后并递归地在下一行继续放置。# 所有皇后都已成功放置,保存解决方案。# 回溯:移除当前行的皇后。print(f"解决方案 {i + 1}:")# 检查当前列和两个对角线是否有皇后冲突。# 尝试在当前行的每一列放置皇后。# 初始化棋盘,-1表示未放置皇后。# 示例:解决8皇后问题。

2024-11-11 22:22:20 175

原创 n皇后回溯法实现

board = [[0 for _ in range(n)] for _ in range(n)] # 初始化棋盘。solution = [row[:] for row in board] # 复制棋盘以保存解决方案。board[i][col] = 1 # 放置皇后。board[i][col] = 0 # 移除皇后。# 如果在当前列放置皇后导致无解,则回溯。solutions = [] # 存储所有解决方案。# 检查左上对角线是否有皇后。# 检查当前列是否有皇后。# 尝试在当前列放置皇后。

2024-11-11 22:20:34 657

原创 解决旅行商问题的回溯算法实现

10, NoEdge, NoEdge, NoEdge, NoEdge, 0] # 起点城市1到各城市的距离(这里假设回到起点的距离已知)[0, 10, NoEdge, NoEdge, NoEdge, 10], # 城市0到各城市的距离,最后一个元素到城市1(起点)的距离。bestl = cl + a[x[n-1]][x[n]] + a[x[n]][1] # 更新最优路径长度。x = list(range(1, n+2)) # 城市访问顺序的数组,从城市1开始到城市n,最后回到城市1。

2024-11-06 22:40:09 653

原创 python深度优先算法0-1背包

print("背包能够容纳的最大价值是(DFS):", max_value)# 如果已经考虑了所有物品或当前重量超过了容量,返回当前价值。# 选择当前物品(如果它不超重),继续递归。# 不选择当前物品,继续递归。# 返回两者中的较大值。

2024-11-04 22:49:29 194

原创 python 回溯法0-1背包问题

在Python中,基本数据类型(如int)是不可变的,所以我们使用列表来包装它。# best_value是一个列表,因为我们想要修改它的第一个元素(即最佳价值)# 如果已经考虑了所有物品,更新最佳价值(如果需要的话)weights = [2, 3, 4, 5] # 物品的重量。values = [3, 4, 5, 6] # 物品的价值。n = len(weights) # 物品的数量。# 不选择当前物品,继续考虑下一个物品。# 选择当前物品(如果它不超重)

2024-11-04 22:46:21 299

原创 python 回溯法生成一个集合的所有子集

将当前路径添加到结果集中。# 从start开始遍历数组。# 进入下一层决策树。

2024-10-28 21:45:54 212

原创 python 0-1背包

j_copy = W # 使用一个临时变量j_copy来避免修改外部变量j(虽然在这个特定情况下修改j是可以的,但为了避免混淆,最好使用一个副本)print("选中的物品索引:", selected_items) # 注意这里的索引是从0开始的,对应输入列表w和v的索引。# 初始化二维数组c,c[i][j]表示前i个物品在总重量不超过j的情况下可以达到的最大价值。# 移除x列表中的第一个元素(它是多余的,因为对应的是没有物品的情况)v = [3, 4, 5] # 物品价值列表。

2024-10-23 23:07:52 248 1

空空如也

空空如也

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

TA关注的人

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