自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cft竞赛题

【代码】cft竞赛题。

2025-06-24 20:45:07 291

原创 区间和查询问题

区间和查询问题是一个常见的算法问题,通常涉及到对一个数组进行多次查询,每次查询需要计算某个子区间的元素和。线段树是一种更高级的数据结构,可以在O(log n)的时间内完成区间和查询和区间更新操作。printf("区间 [%d, %d] 的和是: %d\n", left, right, result);前缀和数组可以在O(n)的时间内预处理,然后在O(1)的时间内完成每次查询。- `query`函数使用前缀和数组在O(1)的时间内完成查询。- `query`函数在O(log n)的时间内完成区间和查询。

2024-12-09 23:52:29 373

原创 完全覆盖问题

假设我们有一个集合 \( S \) 和一个子集集合 \( C \),每个子集 \( C_i \) 包含 \( S \) 中的一些元素。目标是找到一个子集 \( C' \subseteq C \),使得 \( C' \) 中的子集恰好覆盖 \( S \) 中的所有元素且每个元素只被覆盖一次。完全覆盖问题(Exact Cover Problem)是一个经典的组合优化问题,目标是找到一个子集,使得这个子集中的每个元素恰好覆盖一次给定的所有元素。- `sets`:二维数组,存储每个子集包含的元素。

2024-12-09 23:46:50 720

原创 最优切割问题

对于每一种长度`i`(从1到`rod_length`),遍历所有可能的切割方式(即所有可能的`j`,其中`1

2024-12-09 23:44:10 442

原创 旅行商问题

`nearestNeighbour(graph, start)` 函数从起始城市开始,每次选择距离当前城市最近的未访问城市,直到所有城市都被访问。- 图是以邻接矩阵形式给出的,`graph[V][V]` 表示图的邻接矩阵,其中 `graph[i][j]` 表示城市 i 到城市 j 的距离。- `pathDistance(graph, path)` 函数计算给定路径的总距离,包括回到起点的距离。// 没有找到下一个城市,可能无法访问所有城市。- 对于不同的起始城市,最近邻算法可能得到不同的路径和距离。

2024-12-09 23:43:13 561

原创 哈密顿回路问题

图是以邻接矩阵形式给出的,`graph[V][V]` 表示图的邻接矩阵,其中 `graph[i][j]` 为 1 表示顶点 i 和顶点 j 之间有边相连,为 0 表示没有边。- `hamiltonianCycle(graph)` 函数初始化路径数组 `path`,并从顶点 0 开始尝试找到哈密顿回路。哈密顿回路问题是一个经典的图论问题,目标是在给定的图中找到一条经过每个顶点恰好一次的回路。- 如果所有顶点都在路径中且最后一个顶点与第一个顶点有边相连,表示找到一条哈密顿回路。// 回溯:移除顶点 v。

2024-12-09 23:42:08 486

原创 石子合并问题

`sum[i][j]` 通过累加 `stones[i]` 到 `stones[j]` 的值来计算。- 对于每个子问题 `dp[i][j]`,通过尝试所有可能的分割点 `k`,计算合并代价并取最小值。- `dp[i][j]` 表示合并第 `i` 堆到第 `j` 堆石子的最小代价。- `sum[i][j]` 表示从第 `i` 堆到第 `j` 堆石子的权值和。1. 合并 [1, 1],代价为 1 + 1 = 2,得到 [4, 2, 4]。- `dp[0][n - 1]` 存储的是合并整个石子堆的最小代价。

2024-12-09 23:40:22 552

原创 八皇后问题

`placeQueen(row)` 函数尝试在第 `row` 行的每一列放置皇后,如果找到安全的位置,递归到下一行。八皇后问题是一个经典的回溯算法问题,要求在8×8的国际象棋棋盘上放置8个皇后,使得没有两个皇后互相攻击,即任意两个皇后都不能处于同一行、同一列或同一对角线上。- `isSafe(row, col)` 综合上述三个检查,确定在 `(row, col)` 位置放置皇后是否安全。- `board[N][N]` 是一个二维数组,表示棋盘,初始时所有位置均为0,表示没有皇后。

2024-12-09 23:36:28 540

原创 多机度调度问题

多机调度问题(Multiprocessor Scheduling Problem)是一个经典的组合优化问题,通常涉及到将一系列任务分配给多个处理器,目标是找到一种分配方式,使得完成所有任务所需的总时间(通常称为“Makespan”)最小。1. **任务和机器**:`tasks` 数组存储每个任务的执行时间,`n_tasks` 是任务数量,`n_machines` 是机器数量。4. **Makespan**:最终输出每个机器的负载情况,并计算和输出Makespan。printf("输入机器数量: ");

2024-12-09 23:34:43 612

原创 军队调度问题

假设我们有一个简单的调度问题,其中我们需要将不同的任务分配给不同的部队,并且我们需要最小化总成本或最大化总效率。3. 最小成本:`minCost` 记录当前找到的最小成本,`bestAssignment` 记录对应的最优分配方案。1. 成本矩阵:`cost[MAX_TROOPS][MAX_TASKS]` 存储了每个部队执行每个任务的成本。4. 输入输出:程序从用户输入中获取部队数量、任务数量以及成本矩阵,最终输出最优的任务分配和最小成本。printf("输入每个部队执行每个任务的成本矩阵:\n");

2024-12-09 23:33:50 530

原创 0-1背包问题

0-1背包问题是经典的动态规划问题,常见的求解算法包括动态规划(DP)、贪心算法(虽然贪心算法不能保证最优解,但在某些情况下可以作为近似解法)、回溯法和分支限界法。以上代码展示了0-1背包问题的多种求解方法,包括动态规划、贪心算法、回溯法和分支限界法。通过构建一个二维数组`dp`,`dp[i][j]`表示前`i`个物品在背包容量为`j`时的最大价值。分支限界法是一种剪枝策略,通过计算上界(bound)来决定是否继续探索某个分支。贪心算法通常不用于求解0-1背包问题的最优解,因为它不能保证得到最优解。

2024-12-06 14:37:36 752

空空如也

空空如也

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

TA关注的人

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