自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(31)
  • 收藏
  • 关注

原创 linux高并发调优

Linux高并发调优

2022-08-02 15:21:03 957

原创 图的m着色问题

1.问题图的m着色问题。给定无向连通图G和m种颜色,用这些颜色给图的顶点着色,每个顶点一种颜色。如果要求G的每条边的两个顶点着不同颜色。给出所有可能的着色方案;如果不存在,则回答“NO”。2.解析图着色问题描述为: 给定无向连通图G=(V, E)和正整数m,求最小的整数m,使得用m种颜色对G中的顶点着色.使得任意两个相邻顶点着色不同。这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边连接的2个顶点着不同颜色,则称这个数m为该图的色数。求一个图的色数m的问题称为图的m可着色优化问

2021-05-31 20:05:48 291

原创 构造最优前缀的贪心算法

构造最优前缀的贪心算法1.问题构造最优前缀的贪心算法,即哈夫曼算法(Huffman)2.解析我们可以用一个数据结构维护所有数字的最小两个值,每次取最小的两个值就是序列,把这两个值累加到结果上,那么结果就是WPL3.设计priority_queue<int,vector<int>,greater<int> >cmp; for(int i=0 ; i<n; ++i){ int x; scanf("%d",&x)

2021-05-25 22:26:17 118

原创 装载问题(0-1背包问题)

1.问题整数规划问题,0-1 背包问题2.解析思路:轻者先装,直到再装任何集装箱将使轮船载重量超过 C 时停止定理:对于任何正整数 k,算法(轻者先装)对 k 个集装箱的实例得到最优解。3.设计for(int i = 0; i < n; i++){for(int j = 0; j < m; ++j){if(j >= w[i]){dp[j] = max(dp[j], dp[j - w[i]] + v[i]);}}}4.分析O(nlogn)5.源码01背包

2021-05-17 16:28:41 105

原创 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-05-10 23:25:55 103

原创 动态链乘法

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-04-26 21:11:52 185

原创 投资问题

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,…,n3.

2021-04-25 18:57:42 62

原创 特定分治策略

1.问题选第 k 小元素:特定分治策略。2.解析3.设计int select(int a[],int n , int k){ int cnt=n/5; if(n<=6){ sort(a,a+n,cmpx); return a[k-1]; } else{ int b[m],c[m],d[m]; int j=0,t=0; for(int i= 0 ; i<n ;++i){

2021-04-19 17:27:37 55

原创 最近对问题

1.问题最近对问题要求在包含有n个点的集合S中,找出距离最近的两个点。假设 p1(x1,y1),p2(x2,y2),……,pn(xn,yn)是平面的n个点。2.解析1.暴力算法,遍历每一个点对的距离求出最小值2.分治算法,根据中位点二分左右区间得到最短距离,然后对区间[mid - d, mid + d]求最短距离,两值取小,不断递归。对于最近对问题最容易最直接想到的就是蛮力算法,我们可以得到每两个点的距离求最小值,但这样的时间复杂度较高。我们可以采用分治的想法解决这一问题,将复杂难问题转化为简单问

2021-04-12 17:05:59 238

原创 二分归并排序

二分归并排序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 middle,int rig

2021-03-29 15:58:07 102

原创 查找算法

1.问题写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.按实验模板编写,“分析”部分仅给出复杂度结果即可。2.解析暴力查找:for循环遍历完一次数组二分查找:每次都通过跟区间的中间元素对比,将带查找的区间缩小为之前的一半,知道找到要查找的元素,或者区间被缩小为03.设计暴力查找:int find(int n,int m){ int ans=0; for(int i=0;i<n;++i){

2021-03-22 15:56:43 69

原创 用Floyd、Dijkstra算法求解下图各个顶点的最短距离

1.问题用Floyd、Dijkstra算法求解下图各个顶点的最短距离2.解析Floyd算法:设顶点集为v,边集为u初始化:D[u,v]=A[u,v]For k:=1 to nFor i:=1 to nFor j:=1 to nIf D[i,j]>D[i,k]+D[k,j] ThenD[i,j]:=D[i,k]+D[k,j];c) 算法结束:D即为所有点对的最短距离矩阵Dijkstra算法:1.通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。

2021-03-15 16:31:24 209

原创 Kruskal算法构造最小生成树

1.问题举一个实例,画出采用Kruskal算法构造最小生成树的过程。2.解析已知图V = {…} 我们构造一棵最小生成树T第一步:随意选取起点第二步:将所有边按权值从小到大的顺序排序第三步:按顺序遍历每条边(不能构成回路),直到所有节点都被遍历了。实例:图V如下图所示①将每条边按权值从小到大进行排序:AB BC AD BD DE CE(3 3 4 5 6 7)选取AB(3)此时被选中的点:A B②接下来是BC(3)此时被选中的点:A B C③接下来是AD(4)此时

2021-03-10 10:52:00 481

原创 Prim算法构造最小生成树

Prim算法普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。1.问题举一个实例,画出采用Prim算法构造最小生成树的过程。2.解析已知图V = {…} 我们构造一棵最小生成树T第一步:随意选取起点第二步:在前一步的基础上寻找最小权值第三步:继续寻找最小权值,之后以此类推,直到遍历完所有的节点。实例:图v如图1.任意选择一个点这里我们选择A点从A点出发有两条路,一条通向B(权值为3),一条通向D(权值为4)我们选择权值较小的点B此时被选中的点:A

2021-03-08 20:23:42 4438

原创 求图的最短路径(迪杰斯特拉算法)

#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>const int Len=105;const int INF =99999;typedef struct Node{ int nv;//点 int ne;//边 int data[Len][Len]; int visited[Len];}*graph;//图grap

2020-12-04 20:43:26 333 1

原创 BFS(邻接矩阵)

#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>const int Len=105;const int maxn = 1e5 + 10;typedef struct Node{ int nv;//点 int ne;//边 int data[Len][Len]; int visited[Len];}*graph;//图

2020-12-04 19:07:25 683

原创 BFS(邻接表)

#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>const int Len=105;const int maxn = 1e5 + 10;typedef struct AdjVNode *PtrToAdjVNode;struct AdjVNode { int adjv; int pow; PtrToAdjVNode Next;};

2020-12-04 17:11:11 218

原创 DFS(邻接表)

#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>const int Len=105;typedef struct SNode* Stack;struct SNode { int data; struct SNode* next;};//栈typedef struct AdjVNode *PtrToAdjVNode;struct AdjVNode

2020-12-04 16:29:45 228

原创 DFS(邻接矩阵)

#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>const int Len=105;typedef struct SNode* Stack;struct SNode { int data; struct SNode* next;};//栈typedef struct Node{ int nv;//点 int ne;//边 i

2020-12-04 16:28:51 583

原创 Java 抽象类与接口

一.抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun(); 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象,但是抽象类中并不只能有抽象方法。抽象类和常规类很像,同样可以拥有成员变量和普通的成员方法,但不能使用new操作符创建他的实例。它的实现由

2020-12-01 18:12:54 83

原创 归并排序算法实现

#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>void merge(int a[],int l,int r,int mid){ int ax[1000],i,j,k; for(k=l;k<=r;k++) ax[k-l]=a[k]; i=l; j=mid+1; for(k=l;k<=r

2020-11-23 23:14:16 56

原创 快速排序

#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>void quicksort(int a[],int left ,int right){ int i,j,t,temp; if(right<left) return ; temp=a[left]; i=left; j=right; while

2020-11-21 16:18:29 59

原创 堆排序算法实现(最小堆)

最小堆排序#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>const int MAX = 0x3f3f3f3f;const int maxn = 1000;typedef struct HeapStruct *MinHeap;struct HeapStruct { int data[maxn]; int Size; int Ca

2020-11-20 19:22:03 1625

原创 堆排序算法实现(最大堆)

最大堆排序#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>const int MAX = 0x3f3f3f3f;const int maxn = 1000;typedef struct HeapStruct *MaxHeap;struct HeapStruct { int data[maxn]; int Size; int Ca

2020-11-20 18:48:06 95

原创 Java (多态的理解与应用)

1、多态概述1、定义:多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。每个子类的实例但是其父类的实例,但是反过来不成立,例如:动物,狗是动物的一种,猫也是动物的一种。但是不是所有动物都是猫、狗。2、多态是继封装、继承之后,面向对象的第三大特性。3、多态体现为父类引用变量可以指向子类对象。4、前提条件:必须有子父类关系。注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。5、多态的定义与使用格式:定义格式:父类类型 变量名=ne

2020-11-17 18:12:25 237 1

原创 二叉搜索树

#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>typedef struct tree *BT;struct tree{ int data; struct tree *left; struct tree *right;}Bintree;typedef struct SNode* Stack;struct SNode { BT

2020-11-15 16:44:48 59

原创 树的各种遍历方法

树的各种遍历方法#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>const int maxn = 1e5 + 10;int sum=0;//树typedef struct tree *tramp;struct tree{ char data; struct tree *left; struct tree *right; };/

2020-11-05 00:24:08 307 2

原创 栈的建立

#include <stdio.h>#include<string.h>#include<stdlib.h>#include<time.h>const int maxn = 1e5 + 10;typedef struct SNode* Stack;struct SNode { int data; struct SNode* next;};Stack CreatStack() { Stack ptrl; ptrl = (Stack)m

2020-10-25 16:59:04 115

原创 List and Applications

链表的增删改查及应用#include<stdio.h>#include<stdlib.h>typedef struct LNode* List;struct LNode { int Data; List Next;};List MakeEmpty()//建立空表{ List Ptrl; Ptrl = (List)malloc(sizeof(struct LNode)); Ptrl->Next = NULL; return Ptrl;}List Fi

2020-10-24 16:18:07 86

原创 正则表达式及其在java中的应用

正则表达式及其在java中的应用一、正则表达式术语1)正则表达式:regex 或者 regexp(有时称为有理表达式)是定义搜索 模式 的字符序列。通常这种模式通过 字符串搜索算法用于字符串上的“查找”或“查找并替换”操作 ,或者用于输入验证。2)元字符 : 非一般字符,具有某种意义的字符。如 : \bX : \b边界符, 以 X开始的单词3)正则表达式语法字符说明\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n"匹配字符"n”。"\n"匹配换行符。序列"

2020-10-20 23:39:10 218

原创 Eclipse与github的连接

一、在Eclipse上安装GIT插件EGit打开Eclipse, 找到工具栏中的Help。点击AddEGit插件地址:http://download.eclipse.org/egit/updates连续下一步默认安装就可以,之后再重启Eclipse就可以了。二、在Eclipse中配置EGit首先你要在github(https://github.com)上注册一个账号然后在工具栏中的Window中找到Preferences随后找到Team->Git->configurat

2020-09-17 15:42:29 1110

空空如也

空空如也

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

TA关注的人

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