算法分析课
奔跑的废柴
卧久者行必远,伏久者飞必高
展开
-
给定k个排好序的序列,设计一个算法确定2路合并次序,使所需的总比较次数最少。Java代码
算法分析与设计作业 一、实验目的 (1)掌握贪心算法的基本思想; (2)能使用贪心算法求解一些相关问题; 二、实验内容 1、给定k个排好序的序列s1,s2,…,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并2个长度为m和n的序列需要m+n-1次比较。设计一个算法确定2路合并次序,使所需的总比较次数最少。 三、贪心算法基本思想 要想使总比较次数最少,需要先合并短的序列,使短序列合并最多次,使长序列合并最少次。 因此,我们每次选长度最短的序列进行合并。利用优先队列的性质,存放各序列原创 2020-12-11 09:19:07 · 2422 阅读 · 4 评论 -
在三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。Java代码
1.题目 算法分析与设计作业—— 2.思路 转移方程:dp[i][j]+=max(dp[i-1][j-1],dp[i-1][j]) 在三角形中,每个位置的最大路径和为 当前位置值+max(左上最大和,右上最大和)。具体在数组中,是上面的和左上的位置的最大和。遍历数组,获得每个位置的最大和,并且同时更新变量max,返回max。 3.代码 public class Solution2 { public static void main(String[] args) { int k=5;原创 2020-12-04 08:22:32 · 1782 阅读 · 0 评论 -
动态规划求长度相同的2个字符串A和B的最小扩展距离 Java代码
1.题目 算法分析与设计作业—— 对于长度相同的2个字符串A和B,其距离定义为相应位置字符距离之和。2个非空格字符的距离是它们的ASCII码之差的绝对值。空格与空格的距离为0,空格与其他字符的距离为一定值k。 在一般情况下,字符串A和B的长度不一定相同。字符串A的扩展是在A中插入若干空格字符所产生的字符串。在字符串A和B的所有长度相同的扩展中,有一对距离最小的扩展,该距离称为字符串A和B的扩展距离。 算法要求如下 1、 数据输入:第1行是字符串A,第2行是字符串B,第3行是空格与其他字符的距离定值k。 2、原创 2020-12-04 08:20:24 · 916 阅读 · 0 评论 -
根号n段合并排序算法,分治算法 Java代码
算法分析与设计作业—— 根号n段合并排序算法: 将数组划分为根号n个子数组,每个子数组有根号n个元素。然后递归地对分割后的子数组进行排序,最后将所得到的根号n个排好序的子数组合并排序。 public class Sort1 { public static void main(String[] args) { int[] a={88,183,522,374,57,847,96,8008,98,22,444,66};//数组 sort1(a,0,a.length-1);原创 2020-11-13 13:02:35 · 486 阅读 · 0 评论 -
用分治法设计一个算法,在数组A中寻找最大元素和最小元素 Java代码
算法分析与设计作业—— 用分治法设计一个算法,在数组A中寻找最大元素和最小元素 public class b1113 { static int min=Integer.MAX_VALUE; static int max=Integer.MIN_VALUE; public static void main(String[] args) { int[] a={88,183,522,374,5,33224,5,12,7,847,96}; mm(a,原创 2020-11-13 12:59:46 · 1309 阅读 · 0 评论