- 博客(70)
- 收藏
- 关注
原创 数学建模算法与应用习题 1.3
这里,我们可以设产品Ⅰ的A1、A2、B1、B2、B3参与生产的产品数量分别为x1、x2、x3、x4、x5。设产品Ⅱ的A1、A2、B1参与生产的产品数量分别为x6、x7、x8。设产品Ⅲ的A2、B2参与生产的产品数量分别为x9、x10。以下是python代码。
2024-07-14 13:34:52
309
原创 8.贪心-prim最小生成树
对于与最小生成树中的顶点相邻的所有顶点,更新它们到最小生成树的权重,如果存在更小的权重,则更新它们的权重值。:从未包含在最小生成树中的顶点中选择具有最小权重的边,并将与该边相连的顶点加入最小生成树。:从图中任意选择一个顶点作为起始顶点,将其加入最小生成树中。:重复步骤2和3,直到最小生成树包含了图中的所有顶点。这段代码的时间复杂度为 O((V + E)logV)。
2024-05-06 12:41:51
258
原创 7.贪心-区间划分
7.贪心-区间划分Please design a solution for the problem of Interval Partitioning, and analyze the complexity of your solution.
2024-05-06 12:41:00
275
原创 5.贪心-信号站问题 4km覆盖
此外,假设尽管环境清幽,但所有这些房屋的居民都是狂热的手机用户。所以我们的策略是:将下一个基站安置在当前那个不在覆盖范围内房子向东4km远的距离。盖到,因此如果某个房子不在你当前安置的基站4km的距离内,那就最大距离4km的覆盖,这样基站。/*从左到右考虑基站安置的位置,要使得基站数最少,又要所有居民房子都被基站4km范围内覆。首先按距离从西到东排序,从西边开始建站,每次遇到不能覆盖的房子,就在房子东侧4km建站。不在当前站点location右侧4km以内的,就在这个房子右侧4km再建一个*/
2024-05-06 12:33:49
407
原创 4.贪心-环形跑道 加油站问题(leetcode 134)
加油站,在一条环形路线上有 N 个加油站,其中第 i 个加油站的油量为 gas[i]。你有一辆油箱容量无限的汽车,从第 i 个加油站到下一个加油站(i+1)需要花费汽油费用[i]。您在其中一个加油站以空油箱开始旅程。如果可以绕行一圈,则返回起始加油站的索引,否则返回-1。将每个站的汽油含量-消耗量存放在tem数组中,同时使用currtotal作为总体标量来查看时候汽油数 >路程消耗数。同时curr作为当前油箱内 油量,如果curr
2024-05-06 12:27:45
567
原创 3.贪心-分糖果
/从右往左,如果左边大于右边,左边+1。从右往左遍历一趟 如果左边>右边 左边糖果=右边+1,同时计算max(右边+1,当前糖果值)有 N 个孩子站成一排。每个孩子都有一个评分值。从左往右遍历一趟 如果右边>左边 右边糖果=左边+1。2.评分越高的孩子得到的糖果就越多。1.每个孩子必须至少有一颗糖果。你最少要给多少糖果?
2024-05-06 12:13:10
366
原创 2.贪心-跳跃游戏I
给定一个非负整数数组,你的初始位置是数组的第一个索引。数组中的每个元素都代表你在该位置的最大跳跃长度。能到达的最远地方>n 则直接跳出循环。判断你是否能跳到最后一个索引处。只是遍历了一遍数组O(n)
2024-05-06 11:59:42
10
原创 1.贪心-数组组成的最大数
例如,给定 [3,30,34,5,9],最大的数字是 9534330。注意:结果可能非常大,因此需要返回字符串而不是整数。给定一串非负整数,将它们排列成最大的数。记住cmp中的内容,以及等于0的特殊情况。
2024-05-06 11:44:44
134
原创 5.分治-二叉树局部最小
Consider an n-node complete binary tree T, where n = 2d−1 for some d. Each node v of T is labeled with a real number xv. You may assume that the real numbers labeling the nodes are all distinct. A node v of T is a local minimum if the label xv is less than
2024-05-06 10:45:27
397
原创 6.分治-逆序数对反转表
设 { A1,A2,...,An } 是集合 { 1,2,..., n} 的排列。如果 i < j 且 Ai > Aj,那么 (Ai,Aj) 对称为该排列的 "反转"。例如,排列 {3, 1, 4, 2} 有三个反转:(3,1)、(3,2) 和 (4,2)。因为在 1 的左边有 2 个数,即 5 和 9;在 2 的左边有 3 个数,即 5、9 和 8;你的任务是将一个排列转换成它的反转表,或者反过来,将一个反转表转换成相应的排列。
2024-05-06 02:19:40
762
原创 2.分治-找第k大数
/* 2.将每个组a[2]也就是中位数,挪到a[0]-a[(r-p-4)/5],也就是数组前几个,(r-p-4)/5代表五个组的个数。//* 4.对整个数组进行排序,使中位数的中位数左边中位数的中位数,参考快排。//* 5.定位中位数的中位数的索引,分情况递归。//* 1.首先将数组分为五五一组,并且进行排序。//* 3.递归找到中位数的中位数。
2024-05-06 02:09:10
195
原创 1.分治-找奶牛(中位数)
FJ 正在调查他的牛群,以找出最平均的奶牛。他想知道这头 "中位数 "奶牛的产奶量:一半奶牛的产奶量与中位数相当或更高;一半奶牛的产奶量与中位数相当或更低。给定奇数头奶牛 N(1
2024-05-06 02:06:04
385
原创 9.动态规划-子集和问题Subset Sum Problem
Given a set of non-negative integers and a value sum, the task is to check if there is a subset of the given set whose sum is equal to the given sum.Examples:Input: set[] = {3, 34, 4, 12, 5, 2}, sum = 9Output: TrueExplanation: There is a subset (4, 5) with
2024-05-06 01:49:58
672
原创 8.动态规划-三个数字{1,3,5}组成k的方式有几种
Given 3 numbers {1, 3, 5}, the task is to tell the total number of ways we can form a number N using the sum of the given three numbers. (allowing repetitions and different arrangements).For example:The total number of ways to form 6 is: 81+1+1+1+1+11+1+1+
2024-05-06 01:39:49
310
原创 8.动态规划-数字塔
是一个经典的动态规划问题,它描述了一个由数字组成的三角形结构,要求从顶部开始向下走,每次只能走到相邻的位置,最终到达底部,使得经过的数字之和最大。数塔问题可以用一个二维数组来表示,其中第i行有i个元素,表示第i层的数字。数塔问题的一个可能的最优路径是:9 -> 15 -> 8 -> 9 -> 18,其和为59。首先将dp数组初始化为0,将最下方一排初始化为。同时内层循环参数留意一下。
2024-05-06 01:29:40
238
原创 6.动态规划-01背包
给定一组 n 个物品,每个物品有两个正整数属性:大小(size)和价值(profit)。同时给定一个背包,它有一个整数容量 B。问题的目标是找到一个能够装入背包的物品子集,使得这个子集的总价值最大化。
2024-05-06 01:17:11
372
原创 5.动态规划-最长公共子序列(LCS)
请使用任何编程语言实现最长公共子序问题的解决方案,并分析其时间复杂性。回溯时从后往前回溯,不管怎么样都有东西要--,哪个大哪个--。两个for是
2024-05-06 00:41:45
362
原创 4.动态规划-最小二乘
/包含这个点和不包含这个点两种情况。请使用动态编程方法解决分段最小二乘法问题,并分析所设计方案的时间复杂性。高考线性回归曲线,要求给n个点,将点分x组,然后给一个参数k。经过相关计算求的误差最小
2024-05-05 21:49:06
220
原创 3.动态规划-爬楼梯
你正在爬楼梯,到达顶部需要n步,每次你可以爬1步或2步。你爬到顶部的不同方式有多少种?初始化:dp[1] = 1;//一阶一种 dp[2] = 2;初始化 dp[1]、dp[2] 往后求斐波那契数列。
2024-05-05 21:25:51
146
原创 2.动态规划-加权区间调度
Please use dynamic programming method to resolve the Weighted Interval Scheduling, and analyze the time complexity of your solution.请使用动态规划方法解决带权区间调度问题,并分析你的解决方案的时间复杂性。加权区间调度:挑选不冲突的任务 获取最大权重
2024-05-05 21:17:08
283
原创 1.动态规划-割绳子问题
每段的长度由k[0],k[1],...,k[m]表示。求k[0]*k[1]*...*k[m]的最大可能乘积,并分析你的解决方案的时间复杂度。绳子分为两半,前面一半为0~i(正在遍历的部分),后面一般为i~n。0~i的部分可以划分为任意的 (0~j,j+1~i)两端长度,其中j的范围从1~i变化(相当于遍历0~i)因此需要两层循环,第一层i遍历绳子的长度,第二层j遍历前半段绳子的长度。2.j*dp[i-j] :表示本次将前半段绳子分成 j、i-j两部分(三种状态:dp[i]、j*dp[i-j]、
2024-05-05 19:42:51
306
原创 最多 O(log n) 次查询找出中值。
在一次查询中,您可以向两个数据库中的一个指定一个值 k,所选数据库将返回其包含的第 k 个最小值。由于查询的成本很高,因此你希望使用尽可能少的查询来计算中位数。每个数据库包含 n 个数值,因此总共有 2n 个数值,您可以假设没有两个数值是相同的。您想确定这组 2n 个数值的中位数,我们在此将其定义为第 n 个最小值。请给出一种算法,用最多 O(log n) 次查询找出中值。助记:a数组永远和k/2有关,b数组:mid1=s1+b数组永远和k-k/2有关,b数组:mid1=s2+
2024-04-27 00:58:04
304
原创 Find the th largest number of numbers. (Use divide-and-conquer method)
/* 2.将每个组a[2]也就是中位数,挪到a[0]-a[(r-p-4)/5],也就是数组前几个,(r-p-4)/5代表五个组的个数。//* 4.对整个数组进行排序,使中位数的中位数左边中位数的中位数,参考快排。//* 5.定位中位数的中位数的索引,分情况递归。//* 1.首先将数组分为五五一组,并且进行排序。//* 3.递归找到中位数的中位数。
2024-04-23 00:46:26
139
原创 Divide and Conquer -1平均的奶牛
题目大意:FJ 正在调查他的牛群,以找出最平均的奶牛。他想知道这头 "中位数 "奶牛的产奶量:一半奶牛的产奶量与中位数相当或更高;一半奶牛的产奶量与中位数相当或更低。给定奇数头奶牛 N(1
2024-04-22 23:59:33
132
原创 十四届蓝桥杯B组3511飞机降落
其中第 i 架飞机在 Ti 时刻到达机场上空,到达时它的剩余油料还可以继续盘旋 Di 个单位时间,即它最早可以于 Ti 时刻开始降落,最晚可以于 Ti+Di 时刻开始降落。安排第 22 架飞机于 2020 时刻开始降落,3030 时刻完成降落。对于 100100% 的数据,1≤�≤101≤T≤10,1≤�≤101≤N≤10,0≤��,��,��≤1050≤Ti,Di,Li≤105。一架飞机降落完毕时,另一架飞机可以立即在同一时刻开始降落,但是不能在前一架飞机完成降落前开始降落。
2024-04-12 01:30:51
257
原创 实验五 哈希表的算法实现
采用除留余数法实现哈希表的创建,任意采用一种处理冲突的方法解决冲突,计算哈希表的平均查找长度。编程实现以下功能:已知一组关键字(19,14,23,1,68,20,84,27,55,11,10,79),哈希函数定义为:H(key)=key MOD 13, 哈希表长为m=16。实现该哈希表的散列,并计算平均查找长度(设每个记录的查找概率相等)。(1)哈希表定义为定长的数组结构;(2)使用线性探测再散列或链地址法解决冲突;(3)散列完成后在屏幕上输出数组内容或链表;(4)输出等概率查找下的平均查找长度;
2023-12-27 00:00:00
974
原创 实验六 排序相关典型算法实现
1. 编程实现如下功能:(1)输入同样一组整型数据,作为待排序记录的关键字序列。(2)在进行直接插入排序的同时,统计在排序方法中对关键字的比较次数和移动次数,并输出统计结果。(3)在进行冒泡排序的同时,统计在排序方法中对关键字的比较次数和移动次数,并输出统计结果。(4)在进行简单选择排序的同时,统计在排序方法中对关键字的比较次数和移动次数,并输出统计结果。2. 编程实现如下功能之一:(1)希尔排序(2)快速排序(3)堆排序
2023-12-17 00:18:46
1059
原创 对无向图进行邻接矩阵的转化,并且利用DFS(深度优先)和BFS(广度优先)算法进行遍历输出, 在邻接矩阵存储结构上,完成最小生成树的操作。
(1)输入无向图的顶点数、边数及各条边的顶点对,建立用邻接矩阵表示的无向图。(2)对图进行深度优先搜索和广度优先搜索遍历,并分别输出其遍历序列。(3)在邻接矩阵存储结构上,完成最小生成树的操作。
2023-12-09 23:29:24
1416
原创 二叉树的遍历及哈夫曼编码的代码思路及实现
采用二叉链表存储,实现二叉树的创建、遍历(递归)、赫夫曼编码和译码等典型操作。(1)假设二叉树的结点值是字符型,根据输入的一棵二叉树的完整先序遍历序列(子树空用’#’表示),建立一棵以二叉链表存储表示的二叉树。(2)对二叉树进行先序、中序和后序遍历操作,并输出遍历序列,观察输出的序列是否与逻辑上的序列一致。(3)主程序中要求设计一个菜单,允许用户通过菜单来多次选择执行哪一种遍历操作。2. 编程实现如下功能:按字符出现的次数对其建立哈夫曼树,并求出各个字符的哈夫曼编码。
2023-12-02 13:05:01
1262
2
原创 顺序栈、循环链表、链栈的基本操作(链队待更新)
1. 编程实现栈的如下功能:(1)根据输入的栈中元素个数n和各元素值建立一个顺序栈,并输出栈中各元素值。(2)将数据元素e入栈,并输出入栈后的顺序栈中各元素值。(3)将顺序栈中的栈顶元素出栈,并输出出栈元素的值和出栈后顺序栈中各元素值。2. 编程实现队列的如下功能:(1)根据输入的队列长度n和各元素值建立一个循环顺序表表示的队列(循环队列),并输出队列中各元素值。(2)将数据元素e入队,并输出入队后的队列中各元素值。(3)将循环队列的队首元素出队,并输出出队元素的值和出队后队列中各元素值。
2023-11-16 21:42:07
419
原创 单链表小实验
1.熟练掌握线性表的顺序存储和链式存储结构。2.熟练掌握线性表的相关典型操作。假设有两个按元素值递增有序排列的线性表A和B,均以单链表作为存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。编程实现如下功能:1)根据输入的一系列整数,以0标志结束,用头插法建立单链表,并输出单链表中各元素值,观察输入的内容与输出的内容是否一致。2。
2023-11-07 15:17:42
184
原创 别样单链表 数组构建而成(更快)(详见代码及注释)
826. 单链表现在要对该链表进行 M 次操作,进行完所有操作后,从头到尾输出整个链表。:题目中第 k 个插入的数并不是指当前链表的第 k 个数。例如操作过程中一共插入了 n 个数,则按照插入的时间顺序,这 n个数依次为:第 11 个插入的数,第 22 个插入的数,…第 n 个插入的数。
2023-07-28 12:03:52
58
原创 数据结构初学1
若中间相加的和为负数,则说明此次子列不能使前面的次子列和增大,舍去,再往后遍历,若后面的次子列的和仍能大于MaxSum,则更新最大子列和。“在线的意思”是指对数据进行即时处理。
2023-07-10 00:03:17
47
网吧管理系统 C语言课程设计
2023-12-28
C语言求最大公约数 中遇到的错误能不能指导我一下
2022-10-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人