数据结构
文章平均质量分 56
Ink_cherry
这个作者很懒,什么都没留下…
展开
-
欧拉函数
以前的搬一下 #include<cstdio>#include<iostream>using namespace std;int el(int m){ int a=m,res=m; for(int i=2;i*i<=a;i++) { if(a%i==0) { res=res/i*(i-1); while(a%i==0)a/=i; }原创 2016-12-28 17:55:30 · 390 阅读 · 0 评论 -
顺序栈
#includeusing namespace std;#define maxsize 100typedef struct{ int top; int data[maxsize];}Sqstack;Sqstack SqstackSet() //构造一个空栈 { Sqstack S; S.top=-1;原创 2016-10-24 15:48:58 · 1458 阅读 · 0 评论 -
二叉树----遍历
二叉树建立和简单遍历#includeusing namespace std;#define LEN sizeof(BiTree)#include struct BiTree{ BiTree *lchild,*rchild; char data;};BiTree* CreatBiTree() //类似先序遍历创立,空位置补*{ B原创 2016-10-25 14:07:47 · 1231 阅读 · 0 评论 -
排序算法
#include<iostream>using namespace std;void shellsort(int a[], int n){ int j, gap; for (gap = n / 2; gap > 0; gap /= 2) //每次步数/2直到除为1 for (j = gap; j < n; j++) //这里j的初始值是挨个取,用下原创 2016-12-19 16:53:35 · 271 阅读 · 0 评论 -
哈夫曼编码
奇怪的题目要求 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编/译码系统。 [基本要求] 一个完整的系统应具有以下功能: (1)I:初始化(Initial原创 2017-01-04 17:43:04 · 1307 阅读 · 0 评论 -
逆波兰表达式
基本的栈的操作 import java.util.*;public class TestStack { public static void main(String args[]) { Stack st = new Stack (); //定义一个栈 String Str; Scanner input = new Scanner(System.in); Str=in原创 2017-04-29 13:32:54 · 450 阅读 · 0 评论 -
LCS
#include#include#include#define SIZE 100using namespace std; char str1[SIZE]; char str2[SIZE]; char ele_str[SIZE];int D[SIZE][SIZE]={{0,0}};int len1,len2,_count;void dp(){ len1原创 2017-05-17 17:53:48 · 271 阅读 · 0 评论 -
迭代回溯 ---8皇后
八皇后问题 就是在8*8格子上放8个皇后 皇后是可以横行竖行斜行行走 他们之间不能存在可以被吃的关系算法 迭代回溯法 思路是这样 红色框代表put 函数里的if没有通过 就不再有进一步迭代(子树) 进行下一个1皇后2列的进一步匹配数组q[] key是行数 value是列数 max1 n皇后迭代过程大概就是这样 红色就是check失败不进行进一步匹配原创 2017-05-16 21:43:22 · 1049 阅读 · 0 评论 -
匈牙利算法
匈牙利算法有vN 和uN两个点集构成的二分图 通过深度遍历, 找u0-u1匹配增广轨 -------- 为u0找增光轨找到res++ 连线 为u1找增广轨找到res++连线 为u2找增广轨 假如u2能匹配v5,v6的都被u1,u0分别连接那么试图改变u1,u0的连接对象 给u2腾出v5或者v6位置 腾出来就连接res++ 诸如此类直到整个遍历原创 2017-05-16 12:45:34 · 599 阅读 · 0 评论 -
汉诺塔
看着汉诺塔递归很熟悉啊 就是中序的递归啊笑脸就是最简单的那一步,把最底下的最大的盘子堆过去,也是移动次数,也就是2叉树的非叶子节点个数(2^n-1)完整的过程就是树中序遍历移动前n-1个可以不考虑第n个,因为反正它最大,在最底下。原创 2017-05-10 21:30:15 · 354 阅读 · 0 评论 -
Floyd--景点寻路
#define Mvnum 100//#define char Vertextype//#define int Arctype#include#include#includeusing namespace std;int messnum=10;typedef struct message{int num;//景点代码char name[100];//景点原创 2017-06-20 23:18:17 · 343 阅读 · 0 评论 -
stack---停车场
#define stacksize 5#include#include#include#define LEN sizeof(linked_queue)using namespace std;void wait(int);typedef struct sqstack{ int data[stacksize]; int top;}SqstackTp;SqstackT原创 2017-06-20 23:12:43 · 276 阅读 · 0 评论 -
opencv 配置
opencv3.3 visual studio2017 win10 1. https://opencv.org 官网下载opencv 我下载的是最新3.3版本 下载完成解压 2. 将解压路径下 opencv\build\x64\vc14\bin添加到系统环境变量中 3. 添加VC++ 包含目录和库目录 包含目录 库目录:C:\C++lib\opencv\build\原创 2017-12-24 14:36:53 · 476 阅读 · 0 评论 -
链表基础操作----删除偶数项后逆序
#include#include#include#include#defineLEN sizeof(node)usingnamespace std;structnode{ intdata; node *next;}head;structnode*creat(){ int i=0; struct node *p1,*p2,*h原创 2016-10-24 16:23:16 · 2012 阅读 · 0 评论 -
二叉树---层次遍历
就是按层次来 首先是根节点A入队列 然后是根节点的左B右C子树 根节点A出队列 左子B的左D右子树入队列然后B出队列 C的左右子树入对列C出队列 然后是D以此循环知道队列的头部和尾部重合队列空 输出完毕思路并不难,但是在网上看的写的有点麻烦 照着一个ppt写了个简单一点的 可能不是最优的代码 但是很容易能理解这个思想和过程#include#include#define LEN si原创 2016-11-07 16:27:00 · 3229 阅读 · 2 评论 -
乘法逆元
以前的搬一下#include<iostream>using namespace std;int p(int a,int b,int& x,int& y){ if(b==0){ x=1; y=0; return a; } int r=p(b,a%b,x,y); int t=x; x=y;原创 2016-12-28 17:58:22 · 606 阅读 · 0 评论 -
矩阵连乘DP
##############矩阵相乘的条件 A1*A2 A1[x,y]*A2[y,z]=A3[x,z] A1的列数数等于A2的行数 运算次数为x*y*z;对于A1,A2,...An个矩阵,A1*A2*A3*A4*....An; 我们可以用结合律 也就是添加括号,使整个运算过程运算次数最少 ,算法效率最高。###############{网上他原创 2017-05-17 13:14:10 · 872 阅读 · 1 评论 -
NP NPC
什么是P问题、NP问题和NPC问题 这或许是众多OIer最大的误区之一。 你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下转载 2017-05-17 14:48:46 · 459 阅读 · 0 评论 -
关于正则引擎ε-NFA -> NFA (仅通过边建立限制结束状态的两种尝试
对于自动机 一个状态是否为结束状态的判断1一开始的方案对于任何状态,设置初始状态为 true (这里的true为是否为结束状态),每当向后连接边的时候(即以状态为startstatus构造边时候)构造非ε边的,把边的startstatus设置为false。构造ε边则不进行设置直接进行连接这样做会产生一个错误对于单个串联并联重复(紫色箭头表示最终去ε边后的NFA)原创 2017-08-08 14:51:26 · 2156 阅读 · 0 评论 -
最长递增(递减)子序列
递减序列#include #include #include #include #include #include using namespace std;int main(){ int a[1000],n,d[0100]; while(cin>>n){ for(int i = 0; i < n; i ++) {cin>>a[i];d[i]=1;} fo原创 2017-09-24 22:35:30 · 750 阅读 · 0 评论 -
乘法逆元
以前的搬一下![这里写图片描述](http://img.blog.csdn.net/20161228175758261?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSW5rX2NoZXJyeQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)原创 2017-04-27 09:09:32 · 206 阅读 · 0 评论 -
红黑树 修复
插入插入染红,其中叔父如下情况,祖父必黑。 []内表示为上层节点的那一侧。当插入造成不平衡情况 D为left为列 - 情况1:父红,叔红 - 情况2:父红[D] , 叔黑,新节点外侧[D] - 情况3:父红[D], 叔黑,新节点内测[!D]修复过程为1->2->3修复方式为旋转 (与AVL tree LL,RR 单旋转一致)变色 (即改变红黑)修复原创 2017-11-24 17:23:02 · 790 阅读 · 0 评论 -
KMP模板
#include#include#include#includeusing namespace std;char a[1005],b[1005];int next[1005];void getnext(int bl){ next[0]=-1; int i=0,j=-1; while(i<bl) {if(j==-1||b[i]==b[j]) {原创 2016-10-25 14:40:40 · 654 阅读 · 0 评论 -
DFS (仅为学习)
#include#include#include#define LEN sizeof(ArcNode)int Vexnum,Arcnum,visit[100];struct ArcNode{ int adjvex; //指向的顶点名称 ArcNode *next;}; //这个表并没有存取数据typedef struct {int vexda原创 2016-11-24 21:33:41 · 423 阅读 · 0 评论 -
图--->邻接表
邻接表 有向表 1建一个表头数组[n]存放边表头 2 n个边表头数组存放每个边表信息 #include<stdio.h>#include<stdlib.h>#include<malloc.h>#define MAXNODE 100;#define LEN sizeof(ArcNode)原创 2016-11-15 18:18:45 · 1615 阅读 · 0 评论 -
概率DP
DP算法 01 012 0123 01234 012345 ….. 01234….60package anomalous;import java.util.Scanner;public class Q6A2 {public static void main(String[] args) { @SuppressWarnings("resource") Scanner in原创 2017-04-09 11:42:53 · 450 阅读 · 0 评论