- 博客(38)
- 资源 (2)
- 收藏
- 关注
原创 java web课程设计之图书管理系统
水了一学期的java web,终于在课设付出了代价,真是平时幼儿园,期末似高三做完课程设计,老师不让用框架,只能用HTML+CSS+JavaScript+JSP+Servlet+JavaBean+JDBC+DAO,当然我们悄咪咪的用了一点点EL,下面是用户端的一些基本功能的思路,写下来思路更清晰了第五,六天任务(1)用户借阅图书(2)用户归还图书(3)用户续借图书(4)用户预约图书写在前面,这四个功能看似简单,写起来却要有机结合,就比如借阅图书时,除了要判断这本书是否在馆,还要判断这本书是否被预
2020-07-02 19:00:40 4106 8
原创 最小生成树
生成树的代价:设G=(V,E)是一个无向连通网,生成树上各边的权值之和称为该生成树的代价。最小生成树:在图G所有生成树中,代价最小的生成树称为最小生成树。MST( minimum spanning tree)性质假设G=(V, E)是一个无向连通网,U是顶点集V的一个非空子集。若(u, v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u, v)的最小生成树。Prim...
2019-12-02 22:50:09 2855
原创 最短路径
在非网图中,最短路径是指两顶点之间经历的边数最少的路径。在网图中,最短路径是指两顶点之间经历的边上权值之和最短的路径。单源点到其他顶点的最短路径Dijkstra方法,O(n2)任意一对顶点之间的最短路径Floyed方法,O(n3)Dijkstra方法基本思想:设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,对vi∈V-S,假设从源点v到vi的有向边为最短路径...
2019-12-02 22:49:38 301
原创 哈夫曼树和线索二叉树
哈夫曼树:给定一组具有确定权值的叶子结点,带权路径长度最小的二叉树。哈夫曼树的特点:权值越大的叶子结点越靠近根结点,而权值越小的叶子结点越远离根结点。只有度为0(叶子结点)和度为2(分支结点)的结点,不存在度为1的结点.哈夫曼算法基本思想:⑴ 初始化:由给定的n个权值{w1,w2,…,wn}构造n棵只有一个根结点的二叉树,从而得到一个二叉树集合F={T1,T2,…,Tn};⑵ 选取与...
2019-12-02 22:22:44 291
原创 二叉树的存储结构(二)
后序遍历(非递归):enum Tags{Left,Right}; //特征标识定义 template <class T> class StackElement //栈元素的定义 { public: BiTreeNode<T>* pointer; //指向二叉树结点的指针 Tags tag; //特征标识申明 }; #include <st...
2019-12-02 21:03:17 147
原创 二叉树的存储结构(一)
顺序存储结构:完全二叉树和满二叉树中结点的序号可以唯一地反映出结点之间的逻辑关系 。构造:void create(char preorder[],char inorder[],int start_p, int end_p,int start_i,int end_i, char data[],int root){ if(start_p>end_p) return ; else{...
2019-12-02 20:40:03 211
原创 二叉树的逻辑结构
二叉树的定义:二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树的特点:⑴ 每个结点最多有两棵子树;⑵ 二叉树是有序的,其次序不能任意颠倒。注意:二叉树和树是两种树结构。特殊二叉树:一、斜树1 .所有结点都只有左子树的二叉树称为左斜树;2 .所有结点都只有右子树的二叉树称为右...
2019-12-02 17:24:24 1766
原创 字符串和数组
字符串顺序串:串的存储结构:用数组来存储串中的字符序列。串的长度:方案1:用一个变量来表示串的实际长度。方案2:在串尾存储一个不会在串中出现的特殊字符作为串的终结符,表示串的结尾。方案3:用数组的0号单元存放串的长度,从1号单元开始存放串值。链接串:非压缩结构:一个结点只储存一个字符压缩结构:一个结点存储多个字符;模式匹配:模式匹配: 给定主串S="s1...
2019-12-02 09:34:06 133
原创 栈和队列
栈和队列是一种两种的特殊单链表,在STL内有封装好的栈和队列,是可以直接来用的,他们具有各自的特点。栈是先进来的元素后出(先进后出),队列是先进的元素先出(先进先出)...
2019-12-01 23:19:49 110
原创 链式线性表
线性表的链式储存结构的实现主要有单链表,双向链表,循环链表等,它可以根据结点需要来获取一个空间,不会造成空间浪费单链表结点的定义template <typename T>struct Node { T data; Node<T> *next; //此处<T>也可以省略}; 带头结点的单链表:头结点的数据域可以用来储存...
2019-11-17 21:52:24 314
原创 顺序表
顺序表的实现是通过一维数组实现的,其作用是在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系。线性表的实现:const int Maxsize=100;template <class T>class SeqList{ private: T data[MaxSize]; // 存放数据元素的数组 ...
2019-11-11 21:46:43 142
原创 模板
模板的定义模板主要是对于一些功能本质上是一样的,只有参数类型有些不同,这样写一个模板,然后进行实例化后,及对参数进行确定是什么类型。模板分为函数模板和类模板函数模板template<模板形参表>返回值类型 函数名(参数表){函数体}template是模板定义的关键字。<模板形参表>中包含一个或多个用逗号分开的模板形式参数,每一项均由关键字class或ty...
2019-11-11 21:20:14 165
原创 软件开发心得
大一马上过去了,从一个小白,慢慢地,也成长了许多。上学期只会敲一些特别简单的题,这学期也开始接触写一些小系统,成绩统计,通信录,ATM,还有写了好长时间的图书管理系统。一开始写的时候,用老师的话来说,就是垃圾,没有灵魂的代码,完全没有写系统的痕迹,就是在瞎敲。而在老师苦口婆心的教导下,我们也终于有了明显的进步。知道了许多写系统的规范,不会在犯一些低级错误。总的来说,在写系统之前,不要上来就写,...
2019-06-22 22:18:44 166 1
原创 知识点总结—组合,继承,多态
一、组合将一个类的对象作为另一个类的成员,被称作组合或包含1.将嵌入的对象作为新类的公有成员class Eye{public: void see(){ … }};class Nose{public: void smell(){ … }};class Mouth{public: void speak(){ … }};class Ear{public: voi...
2019-06-22 22:17:56 165
原创 图论算法
并查集1、什么叫并查集 并查集(union-find set)是一种用于分离集合操作的抽象数据类型。它所处理的是“集合”之间的关系,即动态地维护和处理集合元素之间复杂的关系,当给出两个元素的一个无序对(a,b)时,需要快速“合并”a和b分别所在的集合,这其间需要反复“查找”某元素所在的集合。“并”、“查”和“集”三字由此而来。在这种数据类型中,n个不同的元素被分为若干组。每组是一个集合,这种...
2019-05-22 22:54:40 406
原创 图论算法
1.深度优先遍历下面给出的深度优先遍历的参考程序,假设图以邻接表存储 void dfs(int i) //图用数组模拟邻接表存储,访问点i { visited[i] = true; //标记为已经访问过 for (int j = 1; j <= num[...
2019-05-18 22:26:33 107
原创 单调队列
单调队列:队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只有队尾可以进行入队操作。。单调队列的常用操作如下:(1)插入:若新元素从队尾插入后会破坏单调性,则删除队尾元素,直到插入后不再破坏单调性为止,再将其插入单调队列。(2)获取最优(最大、最小)值:访问首尾元素。例如一组数(1,3,2,1,5,6),进入单调不减队列的过程1入队,得到队列(1);3入队,得到队...
2019-05-01 22:30:30 107
原创 三分法
三分法当需要求某凸性或凹形函数的极值,通过函数本身表达式并不容易求解时,就可以用三分法不断逼近求解。类似二分的定义Left和Rightmid = (Left + Right) / 2midmid = (mid + Right) / 2;如果mid靠近极值点,则Right = midmid;否则(即midmid靠近极值点),则Left = mid;核心代码double mid, mi...
2019-04-27 21:57:52 197
原创 二分法
简单定义:在一个单调有序的集合中查找元素,每次将集合分为左右两部分,判断解在哪个部分中并调整集合上下界,重复直到找到目标元素。时间复杂度:O (logn),优于直接顺序查找O(n)查找连续函数的写法//x:待查找的值,Caculate():所要查找的函数,在这里单调递增//需保证查找的值在区间范围内double low=“区间下界”,high=“区间上界”,mid;while(hig...
2019-04-24 22:58:51 141
原创 搜索
广度优先搜索框架While Not Queue.Empty ()Begin可加结束条件Tmp = Queue.Top ()从Tmp循环拓展下一个状态NextIf 状态Next合法 ThenBegin生成新状态NextNext.Step = Tmp.Step + 1 Queue.Pushback (Next)EndQueue.Pop ()End深度优先搜索框架递归实现...
2019-04-20 23:06:37 89
原创 搜索
广度优先搜索(BFS)基本思想:从初始状态S 开始,利用规则,生成所有可能的状态。构成的下一层节点,检查是否出现目标状态G,若未出现,就对该层所有状态节点,分别顺序利用规则。生成再下一层的所有状态节点,对这一层的所有状态节点检查是否出现G,若未出现,继续按上面思想生成再下一层的所有状态节点,这样一层一层往下展开。直到出现目标状态为止。——在路径的寻找问题上用得比较多具体过程:1 每次取出...
2019-04-17 22:54:14 81
原创 递归函数
递归算法程序直接或间接调用自身的编程技巧称为递归算法(Recursion)。直接或间接调用自身的函数称为递归函数它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归的基本思想问题分解:把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的小问题,最小问题可以直接解决。递归的关键在于找出递归定义和递归终止条件。递归定义:...
2019-04-13 21:32:52 72
原创 类和对象
类是对一类问题共同点的抽象,进行封装,实现一系列的功能。一、首先,类中要有数据成员与成员函数。并且数据成员一般都是是私有类型的,在主函数中一般无法直接访问,但可以通过在类中定义public成员函数,来对其在主函数中访问。这类函数称为访问器(getXX)和修改器(setXX)class Rectangle {public: double area(); double perimeter()...
2019-04-13 16:39:43 105
原创 区间DP
区间dp就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的 最优解进而得出整个大区间上最优解的dp算法。在做了一些题后,发现了区间dp有一个固定模板,//一般区间DP实现代码memset(dp, 0x3f, sizeof(dp));for (int i = 1; i <= n; i++) //区间长度为1的初始化 dp[i][i] = 0;for (i...
2019-04-10 22:01:02 85
原创 背包
在做背包问题的时候,遇到了三种背包的混合情况,下面对此进行总结问题如果将 P01、P02、P03混合起来。也就是说, 有的物品只可以取一次 (01 背包),有的物品可以取无限次 (完全背包) ,有的物品可以取的次数有一个上限 (多重背包)。应该怎么求解呢?01 背包与完全背包的混合考虑到在 P01和 P02中给出的伪代码只有一处不同, 故如果只有两类物品: 一类物品只能取一次, 另一...
2019-04-07 16:57:32 67
原创 区间dp
区间DP主要是把一个大区间拆分成几个小区间,先求小区间的最优值,然后合并起来求大区间的最优值。//一般区间DP实现代码memset(dp, 0x3f, sizeof(dp));for (int i = 1; i <= n; i++) //区间长度为1的初始化 dp[i][i] = 0;for (int len = 2; len <= n; len++) //枚举区间长度...
2019-04-03 22:41:37 88
原创 背包
一.01背包题目:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路:这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}...
2019-03-30 22:37:50 110
原创 动态规划
在这几天学了动态规划后,通过研究每一段的最优值,上一阶段影响下一阶段,在做每一步决策时,列出各种可能的局部解依据某种判定条件,舍弃那些肯定不能得到最优解的局部解。以每一步都是最优的来保证全局是最优的。由于动态规划需要将每一种的情况都算出来,然后取其中最优值,会造成时间的浪费,所以我们要用空间来换时间,记忆化搜索int dp(int i,int j){int k;if(opt[i][j]&g...
2019-03-27 21:33:33 107
原创 C++阶段总结
第四章指针:持有一个对象的地址,称为指针“指向”这个对象。类型 *指针变量指针存放指定类型的对象的地址,需要用取地址符“&”来获取对象地址。例如int i=120;int *ip=&i;注意:指针不能指向不同类型的对象,并且指针不能保存非地址值,也不能被赋值或初始化为不同类型的地址值。自加、自减运算适用于指向数组元素的指针。生成空指针的三种方法int *p1=n...
2019-03-24 17:45:54 131 2
原创 动态规划
动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法,把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解。动态规划是解决多阶段决策问题的一种方法。多阶段决策问题:如果一类问题的求解过程可以分为若干个互相联系的阶段,在每一个阶段都需作出决策,并影响到下一个阶段的决策。多阶段决策问题,就是要在可以选择的那些策略中间,选取一个最优策略,使在预定的标准下达到最好的效果.最优性...
2019-03-20 22:17:58 384
原创 贪心算法2.0
今天做了贪心的训练题,发现并不是很好做,需要对问题进行深入思考。总结出一下想法。利用贪心策略解题,需要解决两个问题:(1)该题是否适合于用贪心策略求解;(2)如何选择贪心标准,以得到问题的最优/较优解。贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。使用贪心算法求解问题应该考虑如下几个方面:(1)候选集合A:为了构造问题的解决方案,有一个候选集合A作...
2019-03-16 23:25:59 79
原创 贪心算法
对于贪心算法,一开始学的话感觉贪心算法还是比较简单的,但随着题目越来越难,一些题需要考虑需要许多方面,还要避开题上设的坑。贪心策略适用的前提是:局部最优策略能导致产生全局最优解。因为用贪心算法只能通过解局部最优解的策略来达到全局最优解,因此,一定要注意判断问题是否适合采用贪心算法策略,找到的解是否一定是问题的最优解。在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一...
2019-03-13 22:01:10 97
原创 STL章节总结
STL章节总结一、栈(Stack)一种先进后出的数据结构,它只有一个出口,只能操作最顶端元素。头文件: #include <stack>定义:stack<data_type> stack_name; 如:stack <int> s;操作:empty() – 返回bool型,表示栈内是否为空 (s.empty() )size() – 返回栈内元素...
2019-03-08 20:47:49 114
原创 c语言期末总结
C语言期末总结C语言是一门基础的编程语言,许多高端的程序其实都是由C语言编写的。在如今,虽然许多编程语言都应运而生,但C语言地位却一直很重要。大多数主流编程语言都是与C语言一脉相承的,使得从C语言入门后,在学其他语言会轻松许多。上学期我们接触了C语言,也学到了许多知识,对程序设计有了个浅显的了解。接下来,我将对这学期的C语言进行总结。知识点一、 简单的算术运算和表达式,常用的为/和%,其中求...
2019-01-04 14:19:57 2319
原创 数组
数组⑴知识点1.定义一维数组数组类型 数组名数组下标例如:int a[10];定义数组时不能使用变量定义数组的大小.2.初始化一维数组例如:a[5]={1,2,3,4,5};3.定义二维数组时第二维的长度声明永远都不能省略.4.排序㈠交换排序int i,j,temp,n,a[1000];for(i=0;i<n–1;i++){for(j=i+1;j<n;j++...
2018-12-23 22:04:44 991
原创 循环结构
循环结构㈠.知识点⑴.while语句①一般形式:while(循环控制表达式){语句序列}②执行过程:1.计算循环控制表达式的值;2.如果循环表达式的值为真,那么就执行循环体中的语句,并返回步骤1.3.如果循环控制表达式的值为假,就退出循环,执行循环体后面的语句。⑵.do–while语句①一般形式:do{语句序列}while(循环控制表达式);②执行过程:1.执...
2018-12-09 17:05:58 1537
原创 c语言阶段总结
第一章:为什么要学C语言㈠知识点:1.编程分四步:需求分析,设计,编写程序,调试程序。2.现在还需要使用C语言的地方①编写操作系统.②在对程序的运行效率有苛求的地方.③在需要继承或维护已有的C代码的地方.④思想交流的首选媒介语言.如何使用㈡如何使用:多多编程,编得多了,自然就精熟了.㈢感想:1.如果一件事情可以用X语言做,就一定不要用C语言做.2.C语言是做一些高端程序的...
2018-11-11 16:02:17 474
基于Java Web图书管理系统课程设计
2020-07-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人