- 博客(20)
- 收藏
- 关注
原创 【算法】贪心算法-最短路径
第一行为有向图中点的数量n(各点从0到n-1编号)第二行为边的数量m第三行为要求其间最短路径的两个点第四行起为m条边的信息,包括起点、终点和路径长度(保证长度是整数,且绝对值不大于100),以空格隔开。求出输入中第三行两个点之间的最短路径长度并输出,比如上面的输入例子中,点0到点5间最短路径长度为73,则输出为:73。给出一个有向图(无负权值),求任意两点间的最短路径。
2025-01-11 22:09:32
205
原创 【算法】贪心算法-最小生成树
本文中此代码采用Prim树的生成方式,即先确定一个初始节点,再依次引入其周围的最小边节点(须为非环节点)即可以生长树的形式生成最小生成树。最小生成树的费用,如果无法生成最小生成树,则输出。的边,问该图的最小生成树的费用为多少。第一行给定两个整数分别为n。个点的无向图,其中有m。,分别代表完全图中有n。
2025-01-11 22:08:51
152
原创 【算法】动态规划-矩阵连乘
由不同加括号顺序所带来的矩阵乘积的代价不同,考虑三个矩阵的链(A_1,A_2,A_3)的问题。假设三个矩阵的维数分别为10∗10010∗100,100∗5100∗5,5∗505∗50。如果按((A1A2)A3)((1还要10∗100∗50=5000010∗100∗50=50000次标量乘法,总共7500075000次标量乘法运算。用加括号的方法表示矩阵连乘的次序,不同的计算次序计算量(乘法次数)是不同的,找出一种加括号的方法,使得矩阵连乘的次数最小。+1是可乘的,(i=1,2,…+1个数字,其中第i。
2025-01-11 22:07:14
243
原创 【算法】动态规划-最长公共子序列(LCS)
例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0。最长公共子序列(LCS)输入为两行每行一个字符串。输出最长公共子序列的长度。
2025-01-11 22:06:24
212
原创 【算法】动态规划-01背包问题
背包问题是指有N件物品和一个容量为W的背包。第i件物品的价值是v,需要占用的容量是w。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。而0-1背包问题是指可选择的物品每种仅有一件,可以选择不装入某物品,即0;或选择装入某物品,即1。
2025-01-11 22:05:40
132
原创 【算法】动态规划-带权区间调度(Weighted Interval Scheduling)
每一个任务都有三个属性:开始时间s、结束时间f以及所产生的价值v一个任务的s到f这段时间称为其执行时间,如果两个任务的执行时间不重叠,则称它们是兼容的本题将给出若干任务及其属性,求彼此兼容且权重最大的任务子集,输出该子集所有任务产生的总价值。带权区间调度(Weighted Interval Scheduling)输出应为一个数,即彼此兼容且权重最大的任务子集中所有任务产生的总价值,如。
2025-01-11 20:47:44
250
原创 【算法】动态规划-整数划分
一个正整数 n 可以表示成若干个正整数之和,形如: n=n1+n2+…+nk ,其中 n1≥n2≥…现在给定一个正整数 n ,请你求出 n 共有多少种不同的划分方法。由于答案可能很大,输出结果请对 10^9+7 取模。我们将这样的一种表示称为正整数 n 的一种划分。共一行,包含一个整数,表示总划分数量。共一行,包含一个整数 n。
2025-01-11 20:15:25
152
原创 【算法】贪心算法-基础练习 Huffman树
Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下:1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa+ pb。2. 重复步骤1,直到{pi}中只剩下一个数。在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。
2025-01-11 19:43:31
307
原创 【算法】贪心算法-并查集应用:判圈
第一行输入正整数n,m,q表示一个有n个点m条边的无向图。q表示有q次询问。接下来m行有m条边。每行两个u,v属于[1,n]范围的正整数,表示u,v之间有边。接下来q行,每行两个点u,v,属于[1,n]。如果(u,v)这条边已经存在或者如果加入这条边后会产生新的环,则输出一行YES,否则输出NO.
2025-01-11 19:22:56
123
原创 【算法】递归-数塔问题
如下图左边所示为一个数字三角形,也叫数塔请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。只要求输出总和。1.一步可沿左斜线向下或右斜线向下走;2.三角形行数小于等于100;3.三角形中的数字为0,1,…,99;一个n层的数塔对应的输入为n+1行,如下图右边所示格式,第1行为数塔层数,第2行到第n+1行为各层的数字。。
2025-01-11 19:20:15
121
原创 【算法】递归-排列问题
求一个0~N-1的排列(即每个数只能出现一次),给出限制条件(一张N*N的表,第i行第j列的1或0,表示为j-1这个数能或不能出现在i-1这个数后面,并保证第i行第i列为0),将这个排列看成一个自然数,求从小到大排序第K个排列。。
2025-01-11 19:08:14
288
原创 【算法】递归-汉诺塔
汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒A、B和C,A上面套着n个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从A棒搬到C棒上,规定可利用中间的一根B棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。僧侣们搬得汗流满面,可惜当n很大时这辈子恐怕就搬不完了。还好聪明的你可以用计算机完成,你能写一个程序帮助僧侣们完成这辈子的夙愿吗?。
2025-01-11 19:05:54
216
原创 【算法】回溯法-N皇后问题
在n×n格的国际象棋盘上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问一共有多少种摆法。
2024-12-25 11:56:21
332
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人