自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 读书笔记——《算法图解》

《算法图解》读后感  这学期接触的算法课,对于自己来说还是存在有一定的难度。接触算法之后才明白,原来生活中很多常见的问题背后竟然都蕴含着这么深奥的算法原理,存在着许多共性。一次偶然的机会得知室友有算法书籍《算法图解》,便向她借阅。由于时间的关系,没有全部阅读。本书的作者自称是一个视觉型学习者,所以这本书也正如它的书名一样,最大的特点就是“图解”,每一部分的内容都配有生动的图示,是一本非常适合算法初学者阅读的书籍。在阅读的过程中,令我印象最深刻的一部分是讲解贪心算法的章节。贪心算法是指在对某一问题求解时,

2021-06-19 08:19:55 290

原创 期末大作业选题1(贪心算法思想的运用)

1.问题设有n项任务,加工时间分别表示为正整数t1,t2,…,tn.现有2台同样的机器,从0时刻开始安排对这些任务的加工。规定只要有待加工的任务,任何机器就不得闲置。如果直到时刻T所有任务都完成了,总加工时间就等于T。设计一个算法找到使得总加工时间T达到最小的调度方案。设给定的实例如下:t1=1,t2=5,t3=2,t4=10,t5=3试给出一个加工时间最少的调度方案,给出计算过程和问题的解。2.解析解决此问题时联系之前学过的0-1背包问题,0-1背包问题最重要的思想是:这个式子可以推广到其他

2021-06-17 01:16:07 808

原创 图的m着色问题(回溯法)

图的m着色问题

2021-06-04 22:46:25 6222

原创 最优前缀编码(哈夫曼算法)

最有前缀编码

2021-06-04 22:45:52 788

原创 装载问题(背包问题思想的运用)

1.问题2.解析3.设计实例1:

2021-05-23 23:02:23 780

原创 背包问题

1.问题

2021-05-19 10:27:57 53

原创 LCS算法(最长公共子序列问题)

1.问题2.解析3.设计实例:4.分析[算法复杂度推导]5.具体代码实现#include<iostream>using namespace std;int lcs[100][100];//记录lcschar X[100],Y[100];//两个序列 char Z[100][100];//矩阵跟踪,用于最后输出lcsvoid LCS(int m,int n){ int i,j; //初始化矩阵 for(i=0;i<=m;i++){

2021-05-11 15:50:41 501

原创 矩阵链乘法

1.问题

2021-05-01 14:59:06 113

原创 投资问题——动态规划

1.问题2.解析(1)递推公式(2)可证明满足优化原则3.设计完整推算过程核心伪代码:int MaxProfit(int F[M][N],int f[M][N],int n,int m){ //n表示项目数,m表示资金数 //f用于存放项目与投资之间的效益关系,如f[1][2],表示对第一个项目投资2万元产生的效益 //F用于存放产生的最大效益,例如F[3][2],表示有3个项目时,投资2万元产生的最大效益 //Money用于存放产生最大效益时,给第k个项

2021-05-01 14:56:58 1878

原创 选第k小元素:特定分治策略

1.问题

2021-04-24 23:07:55 80

原创 最近对问题

1.问题

2021-04-18 19:27:42 131

原创 二分归并排序

1.问题对n个不同的数构成的数组A[1…n]进行排序,其中n=2^k2、解析1、二分归并排序主要运用了“分治策略”,“分治策略”就是将一个大问题分解为n个规模较小而结构相似的子问题。这些子问题前提条件一样,故解决的方法都是类似的,解决掉这些小问题之后,归并子问题的结果,就得到了大问题的解。2、二分归并排序的原理:先将数据分开排序,然后再合并起来,最后形成一个排好的数组。3、分解:(1)将一个数组分成两个数组,分别对这两个数组进行排序;(2)循环第一步,直到划分出来的“小数组”只包含一个元素,只有

2021-03-30 00:56:49 1428

原创 二分查找

1.问题在一个排好序的数组中查找指定的值,返回其所在的下标。2.解析二分查找又称折半查找,它是一种效率较高的查找方法。基本思想:二分查找的前提条件是一个有序的数组(本次实验默认所有的数组都是升序),在查找所要查找的元素时,首先与数组中间的元素进行比较,如果大于这个元素,就在当前数组的后半部分继续查找,如果小于这个元素,就在当前数组的前半部分继续查找,直到找到相同的元素,或者所查找的数组范围为空为止。基本方法:(1)首先确定该数组的中点位置:mid=(left+right)/2;(注意本次实验数

2021-03-24 14:59:08 158

原创 顺序查找

1.问题在一个排好序的数组中查找指定的值,返回其所在的下标。2.解析顺序查找是一种最简单的线性查找。其基本思想是:从数组的一端开始,顺序扫描,依次将扫描到的元素关键字key相比较,若当前扫描到的元素的值与key相等,则查找成功;若扫描结束后,仍未找到元素的值等于key的记录,则查找失败。基本方法:(1)将数组中的数字从第一个元素开始,依次与输入的关键字相比较;(2)若某个元素匹配关键字,则查找成功,返回其下标(注意这里下标从1开始到n);(3)若查找到最后一个元素还未能找到关键字,则查找失败

2021-03-24 14:53:08 307

原创 Floyd算法

1.问题多源最短路径问题:给定一个加权连通图(无向的或有向的),要求找到从每个顶点到其他所有顶点之间的最短路径。2.解析Floyd算法又称为插点法去,其具体思想为:(1)邻接矩阵graph存储顶点之间的路径,同时最终状态代表点与点之间的最短路径。如果没有直接相连的两点则默认为一个很大的值,而自己的距离为0。如graph[1][2]=2,说明顶点1到顶点2的最短路径为2;(2)从第1个点到第n个点一次加入图中。每个点加入时会试探是否有路径长度被更改,这个长度就是说两点距离会不会因为新加入的点变得更短

2021-03-20 17:00:29 96

原创 Dijkstra算法

1.问题单源最短路径问题:给定一个带权有向图G=(V,E),其中每条边的权都是非负实数。另外,还给定V中的一个顶点,称为源点,求出它到所有其他顶点之间的一系列最短路径,即所经过的路径的权的和。2.解析Dijkstra算法是解决单源最短路径问题的一个贪心算法,核心思想为:设置顶点集合S,设置一个数组visit[i],其中visit[i]=0表示节点i已经被遍历,存放于集合S中,之后不断做贪心选择来扩充这个集合。初始时,S中只含有源点,设v为图中的某一顶点,另外设置数组dist[i]存放源点到顶点i的最

2021-03-20 16:56:17 196

原创 Kruskal算法

1.问题在实践中常常会遇到这样的问题:给定n个点,把它们按照一种代价最低的方式连接起来,使得任意两点之间都存在一条路径。2.解析用图中的顶点表示上述问题中的点,可能的连接用图的边来表示,而连接的成本则用边的权重表示,那么上述问题就可以表示成最小生成树问题。最小生成树的定义:(1)是一棵树:无回路;|V|个顶点一定有(|V|-1)条边。(2)是生成树:包含全部顶点;(|V|-1)条边都在图里。(3)边的权重和最小Kruskal算法—将森林合成树Kruskal算把一个加权连通图G=<

2021-03-14 09:41:40 167

原创 Prim算法

1.问题在实践中常常会遇到这样的问题:给定n个点,把它们按照一种代价最低的方式连接起来,使得任意两点之间都存在一条路径。2.解析用图中的顶点表示上述问题中的点,可能的连接用图的边来表示,而连接的成本则用边的权重表示,那么上述问题就可以表示成最小生成树问题。最小生成树的定义:(1)是一棵树:无回路;|V|个顶点一定有(|V|-1)条边。(2)是生成树:包含全部顶点;(|V|-1)条边都在图里。(3)边的权重和最小Prim算法—让一棵小树长大Prim算法通过一系列不断扩张的子树来构造一棵最

2021-03-14 09:40:21 113

原创 环境搭建

一、使用Eclipse开发Java程序要点提示:使用Eclipse来编辑、编译、运行和调试Java程序.Eclipse上安装GIT插件EGit:插件地址:http://download.eclipse.org/egit/updates

2021-01-07 20:22:52 43

原创 Java中的集合

一、集合框架1、在之前的学习中,我们通常创建一个数组来存储对象,但是这个数组一旦创建,它的大小就固定了。但在很多情况下,我们并不知道存储对象的个数,这时候数组就不在适用。2、Java实用类库提供了一套相当完整的集合类来解决这个问题,使得程序可以在任意时刻和任意位置创建任意数量的对象。集合类主要包括List链表、Set集合和Map映射等基本类型。在接下来的叙述中,我们重点介绍的是实现List接口的ArrayList类二、ArrayList类1、ArrayList类,可以用来存储不限定个数的对象。

2021-01-02 11:22:30 154 2

原创 Java中的继承

一、继承1、继承:从已经存在的类中定义新的类2、父类和子类:在 Java 术语中,如果类 C1继承自另一个类 C2, 那么就将 C1 称为子类( subclass ), 将C2 称为超类( superclass )。 超类也称为父类 ( parent class) 或基类 ( base class), 子类又称为 ( child class)、 继承类 ( extended class) 或派生类( derived class )。子类和它的父类形成了“是一种”(is-a)的关系。2、为什么需要继承

2021-01-01 20:02:33 82

原创 Java中的对象和类

一、对象面向对象程序设计( OOP) 就是使用对象进行程序设计。 对象( object) 代表现实世界中可以明确标识的一个实体。例如: 一个学生、 一张桌子、 一个圆、 一个按钮甚至一笔贷款都可以看作是一个对象。每个对象都有自己独特的标识、状态和行为。作是一个对象。 每个对象都有自己独特的标识、 状态和行为。• 一个对象的状态( state,也称为特征( property) 或属性( attribute)) 是由数据域及其当前值来表示的。 例如: 圆对象具有一个数据域 radius, 它是描述圆的特

2021-01-01 13:38:49 131

原创 Java中的抽象类和接口

一、抽象类1、概念在继承的层次结构中,每个新的子类都使类变得更加明确和具体。类的设计应该确保父类包含它的子类的共同特征。有时候,一个父类设计得非常抽象,以至于它没有任何具体的实例,这样的类称为抽象类。在类的头部使用abstract修饰符表示该类为抽象类。abstract修饰符:(1)abstract修饰的类为抽象类,此类不能有对象,即无法对此类进行实例化;(2)abstract修饰的方法称为抽象方法,此方法不能有方法体,即什么内容都不能有。在UMI图形记号中,抽象类和抽象方法的名字用斜体表示。

2021-01-01 00:07:37 196

原创 Java中的多态

一、继承

2021-01-01 00:06:36 54

原创 Java中正则表达式的应用

一、前言在Java中如何判断两个字符串变量的内容是否相同(匹配),在前面第四章有关String类型的学习中已经有相关内容的介绍,常用的方法是String类中的equals()方法。import java.util.Scanner;public class Hello { public static void main(String[] args) { // TODO Auto-generated method stub String s1="Welcome to Java"; Stri

2020-12-31 23:53:48 229

空空如也

空空如也

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

TA关注的人

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