- 博客(25)
- 收藏
- 关注
原创 最优前缀的贪心算法(第十一次作业)
1.问题构造最优前缀的贪心算法,即哈夫曼算法(Huffman)2.解析我们可以用一个数据结构维护所有数字的最小两个值,每次取最小的两个值就是序列,把这两个值累加到结果上,那么结果就是WPL3.设计priority_queue<int,vector,greater >cmp; for(int i=0 ; i<n; ++i){
2021-06-23 21:40:34
159
2
原创 装载问题(0-1背包问题)(第十次作业)
1.问题整数规划问题,0-1 背包问题2.解析思路:轻者先装,直到再装任何集装箱将使轮船载重量超过 C 时停止定理:对于任何正整数 k,算法(轻者先装)对 k 个集装箱的实例得到最优解。3.设计for(int i = 0; i < n; i++){ for(int j = m; j&n
2021-06-23 21:37:37
140
原创 矩阵链的乘法(第八次作业)
1.问题设A1,A2,…An为n个矩阵的序列,其中Ai为Pi-1×Pi阶矩阵,这个矩阵链的输入用向量P=<P0,P1,…,Pn>给出给定向量P,确定一种乘法次序,使得基本运算的总次数达到最小例如P=<40,20,30,50>,则A1:40×20,A2:20×30,A3:30×50(1) (A1A2)A3=40×20×30+40×30×50=84000(2)A1(A2A3)=40×20×50+20×30×50=1900002.解析蛮力法枚举所有可能的乘法次序,针对每种次
2021-06-23 21:33:32
183
原创 二分归并排序(第四次作业)
1.问题二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k。2.解析二分归并排序是经典的分治算法,分而治之,将长度为n的数组不断划分成n/2的子数组,即将n规模的问题转化成为了n/2规模的子问题,不断划分,当问题规模为1时(长度为1的数组本身就是有序的),将每一个长度为1的子序列进行归并,不断归并就能够实现将长度为n/2的数组归并得到长度为n的数组,实现排序。3.设计void merge(int a[],int left ,int&n
2021-06-23 21:25:20
144
原创 LCS算法和背包算法(第九次作业)
1.问题LCS算法和背包算法,特别要求举例时采用不同于讲义的数据进行推导。2.解析Xi=<x1,x2,…,xi>Yj=<y1,y2,…,yj>Zk=<z1,z2,…,zk>如果Zk是Xi和Yj的最长公共子序列(1)xi = yj,那么zk = xi = yj,Zk-1是Xi-1和Yj-1的最长公共子序列(2)xi ≠ yj,那么zk ≠ xi,Zk-1是Xi-1和Yj的最长公共子序列(3)xi ≠ yj,那么zk ≠ yi,Zk-1是Xi和Yj-1的最长
2021-06-23 21:16:48
91
原创 投资问题(第七次作业)
1.问题设m 万元钱,n 项投资,函数 fi(x)表示将 x 万元投入第 i 项项目所产 生的效益,i=1,2,…,n.问:如何分配这 m 元钱,使得投资的总效益最高?2.解析设Fk(x)表示x万元投给前k个项目的最大效益,k=1,2,…,n, x=1,2,…,m。设给第k个项目投资xk万元,故投资给前k-1的项目资金为(x-xk)万元递推方程:Fk(x)=max{ fk(xk)+ Fk-1(x-xk)},k=2,3,…,n边界条件:F1=f1(x),Fk(0)=0,k=1,2,…,nx F1
2021-06-23 21:13:34
115
原创 最近对问题(第五次作业)
1.问题最近对问题要求在包含有n个点的集合S中,找出距离最近的两个点。假设 p1(x1,y1),p2(x2,y2),……,pn(xn,yn)是平面的n个点。2.解析1.暴力算法,遍历每一个点对的距离求出最小值2.分治算法,根据中位点二分左右区间得到最短距离,然后对区间[mid - d, mid + d]求最短距离,两值取小,不断递归。对于最近对问题最容易最直接想到的就是蛮力算法,我们可以得到每两个点的距离求最小值,但这样的时间复杂度较高。我们可以采用分治的想法解决这一问题,将复杂难问题转化为简单问
2021-06-23 21:11:00
178
原创 查找算法(第三次作业)
1.问题写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.按实验模板编写,“分析”部分仅给出复杂度结果即可。2.解析暴力查找,for循环遍历完一次数组二分查找,每次都通过跟区间的中间元素对比,将带查找的区间缩小为之前的一半,知道找到要查找的元素,或者区间被缩小为03.设计暴力查找:int find(int n,int m){ int an
2021-06-23 21:07:57
188
原创 选第k小元素:特定分治策略(第六次作业)
1、问题在一个数组S中查找第k小的元素并输出。2、解析3、设计import java.util.Arrays;/** * @Description * @Author ZhengLing * @Date 2021/04/19 15:15 */public class SmallK { static int r = 5; private static int select(int[] A, int low, int high, int k) { i
2021-04-19 16:09:16
124
原创 最近对问题(第五次作业)
1、问题蛮力算法解决最近对问题2、解析用S中个点坐标的中位数作为分割点,则会得到一个平衡的分割点m,使得子集S1,S2中有个数大致相同的点。选取垂直线x=c(中位线)来作为分割线。递归地求出S1和S2中的最近对,假设D1、D2是最近距离。距离最近的点,可能在线的俩边,所以,我们需要在以x=c为对称的、宽度为2D的(D为D1、D2中的最小值)的垂直带中。在该范围中递归得出最近距离。3、设计import java.util.Scanner;/** * @Description 最近对
2021-04-12 16:24:21
72
原创 二分归并排序(第四次作业)
问题二分归并排序:对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k解析归并排序 是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。设计public static int[] mergeSort(int[] numArr) { if (numA
2021-03-29 15:53:55
96
原创 MST的Prim与Kruskal算法(第一次作业)
一.问题举一个实例,画出采用Prim算法构造最小生成树的过程,并按实验报告模板编写算法。举一个实例,画出采用Kruskal算法构造最小生成树的过程,并按实验报告模板编写算法。二.解析Prim算法图解Kruskal算法图解3.设计Prim算法/** * @Description MST的Prim算法 * @Author ZhengLing * @Date 2021/03/15 21:36 */import java.util.Arrays;import java.util.
2021-03-15 21:48:41
197
原创 Java this关键字的使用
this关键字的使用:1.this可以用来修饰、调用:属性、方法、构造器2.this修饰属性和方法:this理解为:当前对象 或 当前正在创建的对象在类的方法中,我们可以使用"this.属性"或"this.方法"的方式,调用当前属性或方法。但是,通常情况下,我们都省略"this."。特殊情况下,如果方法的形参和类的属性同名时,我们必须显式的使用"this.变量"的方式,表明此变量是属性,而非形参。在类的构造器中,我们可以使用"this.属性"或"this.方法"的方式,调用当前正在创建的对
2020-09-27 10:58:08
134
原创 Java构造器的使用
类的结构之三:构造器(Constructor)的使用Constructor:建设、建造。construction一、构造器的作用:1.创建对象2.给对象进行初始化二、说明:1.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器2.定义构造器的格式:权限修饰符 类名(形参列表){}3.一个类中定义的多个构造器形成重载4.一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器5.一个类中,至少会有一个构造器public class PersonTest { p
2020-09-27 10:57:49
558
原创 代码生成器的使用(使用SprintBoot 2、MyBatis-Plus框架)
版本:Java:1.8.0_201IDEA:2019.02MySql:5.7.30Navicat for MySql:15.0.6第一步:创建SpringBoot 2的基础项目打开IDEAFile——>new——>project选择SDK版本(Java版本)——>next输入名称——>next——>next输入项目名称...
2020-09-22 22:26:27
341
原创 Java If-else语句
如何从键盘获取不同类型的变量:需要使用Scanner类具体实践步骤:1、导包:import java.util.Scanner;2、Scanner的实例化3、调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量注意:需要根据相应的方法,来输入指定类型的值。如果输入的数据类型不匹配时,会报异常:InputMisMatchException导致程序终止import java.util.Scanner;class ScannerTest{ public
2020-09-22 13:41:47
216
原创 Java运算符
运算符之一:算数运算符+ - + - * / % (前)++ (后)++ (前)-- (后)–class AriTest{ public static void main(String[] args){ //除号:/ int num1 = 12; int num2 = 5; int result1 = num1 / num2; System.out.println(result1);// 2 int result2 = num1 / num2 * num2; Syst
2020-09-22 13:36:22
112
原创 Java数据类型
Java定义的数据类型一、变量按照数据类型来分:基本数据类型: 整型:byte\short\int\long 浮点型:float\double 字符型:char 布尔型:boolean引用数据类型: 类(class) 接口(interface) 数组([])(array)二、变量在类中声明的位置:成员变量 vs 局部变量class Test1{ public static void main(String[] args){ byte b1 = 12; byte b2
2020-09-22 13:31:15
92
原创 第一个Java程序总结
java程序编写-编译-运行的过程编写:将编写的java代码保存在以“.java”结尾的源文件中编译:使用javac.exe命令编译java源文件。格式:javac 源文件名.java运行:使用java.exe命令解释运行字节码(.class)文件。格式:java 类名在一个java源文件可以声明多个class。但是最多只能有一个类声明为public的。而且要求声明为public的类的类名必须与源文件名相同。程序的入口是main()方法。格式是固定的。输出语句:System...
2020-09-22 13:26:40
99
原创 Java的值传递机制
关于变量的赋值:如果变量是基本数据类型,此时赋值的是变量所保存的数据值。如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。/*方法的形参的传递机制:值传递1.形参:方法定义时,声明的小括号内的参数 实参:方法调用时,实际传递给形参的数据2.值传递机制: 如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。 如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。 public class ValueTransferTest1 { pu
2020-09-22 07:55:33
110
原创 Java“网红题”
public class Main { public static void main(String[] args) { int[] arr = new int[] {1,2,3}; System.out.println(arr);//输出arr的地址值 char[] arr1 = new char[] {'a','b','c'}; System.out.println(arr1);//输出"abc" }}import java.io.PrintStream;pu
2020-09-21 20:57:45
283
原创 IDEA打开自动导包
学Spring Boot网上教程进行编写测试类的时候,遇到了以下异常org.junit.runners.model.InvalidTestClassError: Invalid test class 'com.hznu.zl.chapter11.Chapter11ApplicationTests': 1. No runnable methods at org.junit.runners.ParentRunner.validate(ParentRunner.java:525) at org.jun
2020-09-19 10:43:54
217
原创 Exception in thread “main“ java.lang.ClassCastException: class jdk.internal.loader.异常
在IDEA中打开运行项目出现以下异常Java版本异常jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of loader 'bootstrap') at org.
2020-09-19 10:25:36
4836
3
原创 Java09
一、理解“万事万物皆对象”1.在在Java语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构。Scanner,String等文件:File网络资源:URL2.涉及到Java语言与前端Html、后端的数据库交互时,前后端的结构在Java层面交互时,都体现为类、对象。二、1.引用类型的变量,只能存储两类值:null 或 地址值三、匿名对象的使用1.理解:我们创建的对象,没有显式的赋给一个变量名。即为匿名对象2.特征:匿名对象只能调用一次。3.使用publ
2020-09-19 09:05:25
1485
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人