自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CF round 827 div.4

CF round 827 div.4

2022-10-14 15:01:22 195 1

原创 洛谷P1064金明的预算方案

题目传送门题目含义:总钱数m,物品总件数n。每个物品只能买一次,想要买附件必须买主件。求不超过总钱数的最大价值。主件1与附件2、3、4的买法组合有:12、13、123、14、124、134、1234,可以把这些组合看作一个整体,每次从中选取一个组合。这是一个01背包+分组背包的问题。算法的时间复杂度为:下面是代码:#include<iostream>#include<vector>using namespace std;int m,n;int f[400

2020-06-17 22:20:35 173

原创 洛谷P1077摆花

题目传送门题目含义:每种花可以不摆,可以摆任意盆,但不能超过最大盆数。花的摆放顺序按种类依次递增,求摆花的方案数。不同摆放方案主要依赖二维属性的限制:一个是盆数,一个是种数。所以状态表示为:f[i][j]是前i种花摆j盆的方案数。我们的决策空间就是第i种花要摆多少盆,可以想到状态转移方程为:。算法的时间复杂度为:。下面是代码和转移的过程:#include<iostream>using namespace std;int n,m;int f[105][105];

2020-06-16 18:00:10 235

原创 判断排序树和平衡树

int predata=-32767;int JudgeBST(BiTree T){ int b1,b2; if(T==NULL)return 1; else{ b1=JudgeBST(T->lchild); if(b1==0||predata>=T->data)return 0; predata=T->data; b2=JudgeBST(T-&g...

2019-12-11 17:22:06 128

原创 链表与顺序表对比

1.可以随机存取元素(通过首地址和元素序号可以在O(1)的时间内找到指定元素)只能顺序存取元素(按序号访问的平均时间复杂度为O(n))2.插入、删除操作需要移动大量的元素插入、删除操作不需要移动元素,只需要修改指针3.逻辑上相邻的两个元素物理位置上也相邻不需要使用地址连续的存储空间4.每个结点都带有指针域,在存储空间上付出的代价更大,存储密度不够大5.静态分配的顺序存储方式,一旦存储空间装满...

2019-12-10 18:40:36 209

原创 图的深搜与广搜

typedef char VType;#define INF 65535#define MAXVEX 100//邻接矩阵 typedef struct{ VType vertices[MAXVEX]; int edges[MAXVEX][MAXVEX]; int vexnum,edgenum;}MGraph; //邻接表typedef struct ENode{ int a...

2019-12-10 17:59:48 119

原创 排序、平衡、线索、哈夫曼的一些概念

二叉排序树:1.若左子树非空,左子树所有结点的值均小于根结点的值2.若右子树非空,右子树所有结点的值均大于根结点的值3.左右子树都是一棵二叉排序树平衡二叉树:二叉排序树的平均查找长度主要取决于树的高度为避免树的高度增长过快,降低二叉排序树的性能,规定在插入删除结点时,保证任意结点的左右子树高度差的绝对值不超过1线索二叉树:线索二叉树尤其是中序线索化可以直接查找结点前驱和后继,使得遍历...

2019-12-09 19:06:38 292

原创 树的题目(三)

//求最近公共祖先BiTree CommonAncestor(BiTree T,BiTree p,BiTree q){ if(!T||T==p||T==q)return T;//先把p,q结点指针返回 BiTree left=CommonAncestor(T->lchild,p,q); BiTree right=CommonAncestor(T->rchild,p,q);...

2019-12-08 16:10:54 121

原创 二叉树非递归遍历

void PreOrder(BiTree T){ InitStack(S); BiTree p=T; while(p||!IsEmpty(S)){ if(p){ visit(p); push(S,p); p=p->lchild; }else{ pop(S,p); p=p->rchild; } }}void InOrder(BiT...

2019-12-08 16:06:10 605

原创 树的题目(二)

int CalcWPL(BiTree T,int d){ static int wpl; if(T->lchild==NULL&&T->rchild==NULL){ wpl+=(T->weight)*d; } if(T->lchild!=NULL)CalcWPL(T->lchild,d+1); if(T->rchild!=NULL...

2019-12-08 15:40:34 107

原创 树的题目(一)

//求叶子结点数int leaves(BiTree T){ if(!T)return 0; if(T->lchild==NULL&&T->rchild==NULL)return 1; return leaves(T->lchild)+leaves(T->rchild);}//求树的高度int height(BiTree T){ if(!T...

2019-12-08 15:15:48 167

原创 二叉树建树与层次遍历

typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;void CreateBiTree(BiTree &T){ char ch; scanf("%c",&ch); if(ch=='#'){ T=NULL; return; } T=(BiT...

2019-12-08 14:57:04 175

原创 链表题目

typedef struct LNode{ int data; struct LNode* next;}LNode,*LinkList;void Reverse(LinkList &L){ //断链 LinkList p=L->next,r; L->next=NULL; while(p!=NULL){ r=p->next; p-&gt...

2019-12-07 11:42:49 114

原创 链表题目(二)

//判断B是否为A的子序列 int Match(LinkList A,LinkList B){ LinkList p=A->next,q=B->next,r=A->next; while(p!=NULL&&q!=NULL){ if(p->data==q->data){ p=p->next; q=q->next; ...

2019-12-07 10:44:53 101

原创 链表题目(一)

//删除a,b之间的元素void Del_a2b(LinkList &L,int a,int b){ LinkList pre=L,p=L->next,r; while(p!=NULL){ if(p->data>a&&p->data<b){ r=p->next; pre->next=r; free(p)...

2019-12-07 09:35:03 161

原创 头插法与尾插法

void CreateList_Head(LinkList &L){ L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; LinkList s;int x; scanf("%d",&x); while(x!=9999){ s=(LinkList)malloc(sizeof(LNode)); s->data...

2019-12-07 08:50:23 238

原创 链表查找插入删除

typedef struct LNode{ int data; struct LNode* next;}LNode,*LinkList;bool GetElem(LinkList L,int i,int &x){ LinkList p=L->next;int j=1; while(p!=NULL&&j<i){ p=p->next;j++...

2019-12-07 08:39:30 121

原创 顺序表的一些操作

#define MaxSize 50typedef struct{ int data[MaxSize]; int length;}SqList;//二分查找(有序表)非递归 int BinarySearch(SqList L,int x){ int low=0,high=L.length-1,mid; while(low<=high){ mid=(low+high)/...

2019-12-04 19:40:28 84

原创 插入选择冒泡快排归并希尔--排序算法

void InsertSort(ElemType A[],int n){ for(int i=2;i<=n;i++){ if(A[i]<A[i-1]){ A[0]=A[i]; for(int j=i-1;A[j]<A[0];j--){ A[j+1]=A[j]; } A[j+1]=A[0]; } }} //时间:最好O(n),最坏平...

2019-12-04 18:14:53 118

原创 线索二叉树

typedef struct ThreadNode{ int data; struct ThreadNode *lchild,*rchild; int ltag,rtag;}ThreadNode,*ThreadTree;void CreateInThread(ThreadTree T){ ThreadTree pre=NULL; if(T!=NULL){ InThread(T...

2019-11-20 21:04:13 79

原创 判断完全二叉树

bool IsComplete(BiTree T){ if(T==NULL)return false;//空树不是 InitQueue(Q); EnQueue(Q,T); BiTree p; while(!IsEmpty(Q)){ p=Front(Q); if(p->lchild!=NULL&&p->rchild!=NULL){ DeQueue...

2019-11-20 21:01:27 165

原创 一元多项式求和

//一元多项式求和typedef struct PolyNode{ int coef;//系数 int exp;//指数 PolyNode *next; }PolyNode,*PolyList; //把合并后的多项式更新到pa中,并释放多余结点 PolyList Add(PolyList &pa,PolyList &pb){ PolyList p,q,pre,t...

2019-11-20 20:59:02 251

原创 带权路径长度

int CalcWPL(BiTree T,int d){ static int wpl; if(!(T->lchild)&&!(T->rchild)){ wpl+=(T->weight)*d; } if(T->lchild)CalcWPL(T->lchild,d+1); if(T->rchild)CalcWPL(T->rch...

2019-11-19 08:49:26 842

原创 孩子兄弟链表

typedef struct CSTNode{ int data; struct CSTNode *firstchild,*nextsibling;}CSTNode,*CSTree; int height(CSTree T){ if(!T)return 0; int hc=height(T->firstchild); int hs=height(T->nextsibl...

2019-11-19 08:36:34 328

原创 Typora的使用

2019-05-14 21:27:35 227

原创 链表插入和删除操作时查找元素和链表查找元素的方法的区别

代码源自教科书先上代码typedef struct Node{ ElemType data; struct Node *next;}Node *LinkList;Status ListInsert(LinkList *L,int i,ElemType e)//插入需要三个参数 { //插入先查找 LinkList p=*L; int j=1; while(p&amp...

2019-05-02 21:38:34 747

原创 弗洛伊德( Floyd )算法

如果借助顶点1,任意两点之间的最短路径更新为:借助顶点1的方法是:#include <iostream>using namespace std;int main() { int e[11][11],n,m,p,q,t; int inf = 99999999;//正无穷的定义,即使两个正无穷相加,结果也不超过int类型的范围 cin >&...

2019-04-28 16:54:25 145

原创 并查集

(一)寻找帮会老大int getf(int v){ if(f[v]==v)return v; else{ f[v]=getf(f[v]); return f[v]; }}如果某个人的大哥不是他自己的话,证明这个人并非帮会老大。所以就要递归寻找他大哥的大哥,一直找到帮会老大为止,递归开始返回。返回的时候需要注意,让途经所有人的大哥都变成帮会老大,所以每次返回的是帮会老...

2019-04-26 11:27:00 79

原创 AVL树失衡的四种形态以及相应的旋转方法

2019-04-25 14:27:42 756

原创 讲一些正则表达式的细节问题

一、为什么使用原生字符串r''指的是原生字符串,目的是将Python中反斜杠的含义取消,避免发生冲突例一:目标字符串为'ab\bc\cd',想要匹配'ab\'我们知道一个\需要用两个\\来匹配,正则表达式应改写为ab\\,进而在Python中应改写为"ab\\\\"。一串字符需要经过Python解释器的转义和正则表达式的转义,这样做显然比较麻烦。所以我们可以使用r''原生字符串跳过Pyt...

2019-04-24 15:33:04 166

原创 Python进程间的通信方式

保持多个进程之间数据的一致性至关重要,此时需要用到进程同步技术(一)多个进程需要同时访问共享资源时,Lock可以避免访问发生冲突from multiprocessing import Process, Lockdef func(lock, num): lock.acquire() try: print('hello world', num) ...

2019-04-23 17:57:28 425

原创 数据结构第六章习题

我会慢慢更新一些重要的习题1.一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。如果按层次顺序从1开始对全部结点编号,问:(1)各层的结点数目是多少?(2)编号为p的结点的父结点(若存在)的编号是多少?(3)编号为p的结点的第i个儿子结点(若存在)的编号是多少?(4)编号为p的结点有右兄弟的条件是什么?其右兄弟的编号是多少?答:(...

2019-04-19 11:14:29 5266 1

原创 通过先序遍历结果建立二叉树以及遍历二叉树的方法

在网上看到很多建立二叉链表的方法,我比较认可的一种方法是:#include <iostream>#include <cstdlib>using namespace std;typedef char ElemType;typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}Bi...

2019-04-18 14:49:54 2788

原创 二叉树和完全二叉树的性质

1.第i层至多有个结点(i>=1)2.深度为k的二叉树至多有个结点(k>=1)3.叶子结点数为,度为2的结点数为,则=+1。(证明:)下面是完全二叉树的性质特点:叶子结点在层次最大的两层出现;对于任意结点,右分支下的子孙的最大层次为k,左分支下的子孙的最大层次比为k或k+1.4.n个结点的完全二叉树的深度为int_down()+1。5.将完全二叉树自顶而下,同一...

2019-04-17 11:21:30 5459

原创 已知二叉树的先序遍历和中序遍历,求后序遍历。以及已知二叉树的中序遍历和后序遍历,求先序遍历。

1.已知先序遍历、中序遍历、后序遍历中的任意一种方式,都无法建立起二叉树。2.已知先序遍历和中序遍历,可以建立二叉树。3.已知中序遍历和后序遍历,可以建立二叉树。4.已知先序遍历和后序遍历,无法建立二叉树。下面来看洛谷p1030https://www.luogu.org/problemnew/show/P1030参考题解中的思路:首先定义两个字符串inorder,pos...

2019-04-17 01:16:52 2051

原创 Dijkstra(迪杰斯特拉)算法(单源最短路径)

时间复杂度是O()不能处理存在负边权的情况#include<iostream>using namespace std;int m,n,s;int inf=99999999,minn=0;int i,j,u;int e[11][11],dis[11],book[11]={0};int main(){ cin>>n>>m>>s...

2018-12-14 14:18:34 189

转载 用递归思想解决汉诺塔问题

看完汉诺塔问题的代码后不是很理解,恰好看到以为知乎大神的讲解,受益匪浅。#include&lt;iostream&gt;using namespace std;int step;void move(int n,char X,char Z,char Y){ if(n == 0){ return; } move(n-1,X,Y,Z); ste...

2018-11-13 08:54:00 245

原创 wsgi,uwsgi,nigix

wsgi:服务器网关接口描述web server如何与web application通信的规范WSGI server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端;uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议nginx作为最前端的服务器,他负责接收所有的客户端请求,对于...

2018-10-15 08:56:55 146

原创 mysql存储过程

delimiter // create procedure myproc(out n int) begin select ... end //delimiter ;  

2018-10-14 09:18:28 63

原创 用python实现选择排序法、冒泡排序法、插入排序法

冒泡排序法l = [10, 1, 18, 30, 23, 12, 7, 5, 18, 17]for n in range(len(l)-1): for i in range(len(l)-n-1): if l[i] &gt; l[i+1]: l[i],l[i+1] = l[i+1],l[i]print(l)选择排序法l = [10...

2018-10-13 14:25:46 1227 1

空空如也

空空如也

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

TA关注的人

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