自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 克鲁斯卡尔算法实现图的最小生成树(紫书)

过程如下: 对边集排序,选取最小的边 选取次小的边,判断是否形成环路,形成则舍去,不形成则选取, 重复以上步骤 (用并查集对节点集合快速合并,话说并查集真的是简单,暴力又优美啊//嘻嘻)#include#include#include#includeusing namespace std;int u[200],v[200];//最大有200条边,每条边的两个节点的位置flo

2018-01-26 17:20:23 365

原创 顺序表实现一颗avl树

课本上讲的是用指针建立avl树,但是这种方法速度慢而且指针容易出现各种错误,实在是不是竞赛中的上上选。 现在po上顺序表建立avl树的代码。#include#includeusing namespace std;struct node{ //该节点的储存的值,左子树地址,右子树地址 int k, l, r, size;//size为该树的重量(包含该节点)

2018-01-26 17:14:43 503

原创 大数乘法(完全模拟手工乘法,弱爆了)

这是数据结构与算法的作业,要求实现一个能做任意的大数乘法的程序 当时完全不懂分治法和FFT,后来还是听一个学长说,可以快速大数乘法(汗) 一并写到笔记里吧#include#include#includetypedef struct data{ int a; data *next;}data;typedef struct big{ data head;

2018-01-26 17:10:34 1937

原创 香农编码

信息论与编码作业,要求用C语言对文本实现香农编码,要放寒假了,一并写到笔记里吧(新版编辑器居然不能对文章创建新分类了。。。。。。) 细节见注释//我记得这段代码的注释写成于和初恋分手第二天#include#include #include#includeusing namespace std;struct node{ char a;//字符 float b;//

2018-01-26 17:04:29 2154

原创 树转二叉树

文本中用括号表示法输入二叉树,编写程序识别输入,用父亲表示法建立树,转换成一颗二叉树。 细节部分,注释很清晰了#include#include#includeusing namespace std;struct node{ char c;//字符的值 int key;//本节点的地址 int father;//父节点的地址}tree[100];struc

2018-01-26 16:40:46 190

原创 hdu1231

给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和 为20。 在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该 子序列的第一个和最后一个元素。测试输

2018-01-24 12:13:19 393

原创 如何给数字文件盖上时间戳——How to Time-Stamp a Digital Document

传统TSS时间戳实现以及分布式时间戳的实现。 思考:这两种时间戳不可伪造吗? 更改时间戳字符串不可以吗?先例举一种比较幼稚的方法:数字保险箱 每当客户机有一个要加盖时间戳的文件时,就将文档发送到时间戳服务器(TSS)。服务记录收到文件的日期和时间,并保存文件的副本以备保管。如果需要验证客户机的文档的完整性或是否被篡改时,它可以与TSS存储的副本进行比较,如果它们是相同的,则表明,在TSS记

2017-12-21 19:27:49 2474

原创 克鲁斯卡尔算法(Kruskal)图的最小生成树

算法竞赛中常用的算法,求图的最小生成树 过程: 对边集排序, 选取最小边,将连接的节点放到一个集合中 选取次小的边,当边连接的定点不在同一个集合中时,合并集合。#include<cstdio>#include<iostream>#include<algorithm>#include<queue>using namespace std;int u[200],v[200];//最大有2

2017-12-20 23:01:28 3599

原创 二分法以及牛顿法开根号

二分法比较简单#include#includeusing namespace std;float sqrt(float n){ float max,min,mid; max=n; min=0; mid=(min+max)/2; while(1) { if(n-mid0.002&&mid-n0.02) break;//设

2017-12-17 17:27:03 4417 1

原创 树转二叉树

input.txt中用括号表示法输入树,输出生成的二叉树的每个节点的子节点地址。 测试文件:a(b(d)g(e(h)f)c)#include<cstdio>#include<stack>#include<iostream>using namespace std;struct node{ char c;//字符的值 int key;//本节点的地址 int fath

2017-12-16 17:56:23 152

原创 ac自动机

预备知识:kmp算法,字典树 debug了好多天,才终于出正确结果了,终于知道逻辑错误的可怕了,越来越理解什么叫做“比编译错误更折磨人的是逻辑错误”。具体实现就看注释了。。。。。。#include#include#include#includeusing namespace std;struct node{ char c;//该节点所代表的值,其实不加也可以,因为字典

2017-12-12 21:04:46 137

原创 KMP算法(未优化版本,算法导论原版)

kmp是经典的单模式串字符串匹配算法,对于一个字符串在长文本中的匹配很有效。kmp算法包括两部分,对模式串的预处理和模式串匹配**1、模式串预处理 这一部分关键在于next数组的构造,相当于对模式串进行kmp匹配。注意,字符串数组与next数组的首字符不存储信息。 next数组中储存当该字符的下一个不匹配时,下一步应当跳转到哪里,即,到此为止该字符串的最长公共前缀,后缀的长度。 详细见代码

2017-12-12 20:42:37 705

转载 全排列的递归实现以及利用STL实现全排列

递归实现全排列让第一个元素和每一个元素交换(包括他本身),对后面的元素全排列,然后再还回来方便和下一个交换,当全排列只有一个元素时,输出整个序列。#include <iostream>#include <algorithm>using namespace std;void FullPermutation(int array[], int left, int right){ if (l

2017-12-12 20:11:53 277

原创 竞赛中使用的数据结构——二叉树

看了刘汝佳编写的《算法竞赛入门经典》中的一节(p148),用数组表示一颗二叉树,第一次见到这样的数据结构#include<cstdio>#include<string>#include<iostream>using namespace std;//根据算法竞赛入门p148实现,节点编号问题见书int rightc[25] = { 0 };//每个节点的左指针int leftc[25] =

2017-12-12 20:08:33 384

原创 二叉树生成与递归遍历

前序递归生成,前中后序遍历#include<cstdio>#include<cstdlib> #include<string>#include<iostream>#include<cstdio>using namespace std;struct tree{ int a; tree *right; tree *left;} ; //前序遍历生成二叉树tre

2017-12-12 20:03:48 181

空空如也

空空如也

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

TA关注的人

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