- 博客(193)
- 收藏
- 关注
原创 图论之无权最短路径
无权最短路径顾名思义是边没有权值,所以我们可以把所有的边都赋值为1,求最短路径可以采用广度优先搜索(BFS),该方法按层处理顶点,距开始点最近的那些顶点首先被求值,而最远的那些顶点最后被求值。这很像对树的层序遍历。首先先把不通的路径置为无穷大(我这里置为-1),可以通的路置为1,然后运用广度优先搜索(使用的是队列实现),先取一个点作为始发点,这里取v3,然后把v3加入队列,然后一次寻找可以通的路,
2015-02-03 12:22:30 660
原创 图论之拓扑排序
引例:首先先举一个拓扑排序比较贴近实际的例子吧。比如我想修操作系统这门课,假设学校要求必须先修数据结构和C语言,我必须满足修过数据结构和c语言才可以修操作系统这门课。但是有一个很奇怪的问题就是如果反过来如果要求学C语言和数据结构之前要学操作系统,那么就会出现问题,所以拓扑排序的充要条件就是不能出现回路,即出发点和终点都是自身的情况。实现:寻找一个尚未分配拓扑编号的入度为0的顶点,如
2015-01-31 21:46:51 451
原创 左式堆的实现与详解
左式堆的性质:像二叉堆那样既有结构性质,又有堆序性质。事实上,和所有使用的堆一样,左式堆具有相同的堆序性质,该性质我们已经看到过。不仅如此,左式堆也是二叉树,左式堆和二叉堆唯一的区别是:左式堆不是理想平衡的,而且事实上是趋于非常不平衡的。零路径长:(null path length)假设有个结点x,npl(x)定义为x到一个不具有两个儿子的结点的最短路径的长,因此,具有0个或1个儿子的
2015-01-15 12:22:04 905
原创 二叉堆的实现和详解(优先队列的基础)
二叉堆的基本内容:由于堆是一颗被完全填满的二叉树,所以最后一层是从左到右一次填入的,所以可以不必要链表表示(不连续),可以用数组表示比较节省开销(vector)。在堆操作中,两个比较重要和新的内容是上滤和下滤,个人总结了一下,插入新的结点的时候用上滤,删除最小结点的时候用下滤。还有一个值得注意的概念,它叫空穴,空穴顾名思义是空的,比如删除了根结点的元素,那么现在根结点即为空穴。好接下来我们
2015-01-11 22:29:54 734
原创 计算机组成原理课程设计(vhdl语言实现)
注明:在vhdl语言中,--代表注释,等价于//1. 一位全加器设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY add ISPORT(a,b,cin:IN STD_LOGIC;Co,S:OUT STD_LOGIC);END ENTITY add;ARCHITECTURE fc1 OF add isBEGINS<= a xo
2015-01-06 20:23:00 3470
原创 HashTable(不使用链表的散列表)
分离链接散列算法的缺点是使用一些链表,由于给新单元分配地址需要时间,因此这就导致算法的速度有些缓慢,同时算法实际上还需要第二种数据结构的实现。下面就用探测散列表来实现哈希表。1.线性探测在线性探测中,函数f是i的线性函数,一般情况下f(i) = i,这相当于逐个探测每个单元(使用回绕)来查找出空单元。2.平方探测平方探测是消除线性探测中一次聚集问题的冲突解决方法。平方探测就是冲突函
2015-01-04 19:54:42 668
原创 HashTable(哈希表分离链接法)
哈希表的分离链接法其实就是个vector容器 + 链表来实现的,其本质就是如果数值(mod)相等的话就插入到vector的同一格,将相等的两个值依次存放在链表中,如果空间很小的话建议不要采用此方法,因为此方法的链表为双向链表,下面为分离链接法的代码:#include#include#include#include#includeusing namespace std;template
2015-01-04 09:08:39 716
原创 hdu1710 Binary Tree Traversals
Binary Tree TraversalsTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3714 Accepted Submission(s): 1654Problem DescriptionA binar
2015-01-03 13:06:48 791
原创 2014的小结和感悟
今天是2015年的第一天,总觉得有必要记录下我过去一年中的心得和体会,回望2014真是收获颇多,其实每个时刻,每个时间段都值得我们去记录和铭记。
2015-01-01 12:58:07 732
原创 map的例子
题意:输入一堆字符串,然后可以任意替换其中的一个字母,给定一个最低底线(例如输入15)表示必须要有15个以上只有一个字母不同的字符串组成的数组(这里用map>,第一个表示当前遍历到的字符串,vector里面存的是和遍历到的字符串只差一个字母的那些字符串),然后要求你编程实现,下面为代码:#include#include#include#include#include#includ
2015-01-01 12:48:22 479
原创 Avl树(二叉平衡树)
#include #include using namespace std;static int arr[] = { 3, 2, 1, 4, 5, 6, 7, 16, 15, 14, 13, 12, 11, 10, 8, 9 };#define TBL_SIZE(a) ( (sizeof(a)) / (sizeof(a[0])) )template class AVLTreeNode{
2014-12-29 19:53:29 585
原创 数据结构之查找二叉树--BST
#include using namespace std;templateclass BinarySearchTree{public: BinarySearchTree(); BinarySearchTree(const BinarySearchTree& rhs); //copy constructor ~BinarySearchTree(); //destru
2014-12-24 12:44:36 471
原创 二叉树的遍历
#include#include#includeusing namespace std;//二叉树结点typedef struct BiTNode{ //数据 char data; //左右孩子指针 struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//按先序序列创建二叉树int CreateBiTree(BiTree &T
2014-12-22 18:37:52 487
原创 STL list容器实现集合的交和并
集合的交:#include#include#includeusing namespace std;templatelist intersection(const list &L1,const list &L2){ list intersect; typename list::const_iterator iterL1 = L1.begin(); typename
2014-12-21 20:16:32 490
原创 将中缀表达式转换成后缀表达式
#include#include#include#include#includeusing namespace std;void inToPostfix(){ stack s; char token; cin>>token; while(token != '=') { if(token >= 'a' && token <= '
2014-12-18 14:14:41 465
原创 计算后缀表达式的值
#include#include#include#include#includeusing namespace std;double evalPostFix(){ stack s; string token; double a,b,result; cin>>token; while(token[0] != '=') {
2014-12-18 13:11:21 688
原创 vector容器内部实现机理(源代码和测试代码)
//Vector.h,个人实现的头文件,源文件引用时用#include "Vector"#ifndef VECTOR_INCLUDED#define VECTOR_INCLUDEDtemplateclass Vector{public: explicit Vector(int initSize = 0):theSize(initSize),theCapacity(initSiz
2014-12-16 15:07:09 1143
原创 c++类模版和运算符重载的运用
最近在看数据结构算法c++描述,很久没写c++了,所以就当回忆下,所以以下代码就当练手,输出的是工资的最大值人的姓名和它的工资:#include#include#includeusing namespace std;template //模版const Compareable & findMax(const vector & arr) //Compareable可以表示任意类
2014-12-13 17:46:00 484
原创 hdu2544(裸最短路dijkstra)
最短路Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 34140 Accepted Submission(s): 14820Problem Description在每年的校赛里,所有进入决赛的同学都会获
2014-12-08 12:55:57 470
原创 读入外挂
void Read(int &a){ char ch; a = 0; ch = getchar(); while( !(ch >= '0' && ch <= '9') ) ch = getchar(); while((ch >= '0' && ch <= '9') ){ a = a * 10 + ch - '0'; ch =
2014-12-08 11:21:56 796
原创 hdu2094 产生冠军
产生冠军Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9370 Accepted Submission(s): 4404Problem Description有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间
2014-12-07 20:38:33 671
原创 hdu2955 Robberies(背包问题)
RobberiesTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 13043 Accepted Submission(s): 4827Problem DescriptionThe aspiring Roy th
2014-12-06 21:11:03 483
转载 01背包,完全背包,多重背包详解
背包之01背包、完全背包、多重背包详解 PS:大家觉得写得还过得去,就帮我把博客顶一下,谢谢。首先说下动态规划,动态规划这东西就和递归一样,只能找局部关系,若想全部列出来,是很难的,比如汉诺塔。你可以说先把除最后一层的其他所有层都移动到2,再把最后一层移动到3,最后再把其余的从2移动到3,这是一个直观的关系,但是想列举出来是很难的,也许当层数n=3时还可以模拟下,再大一些就不可能了,所
2014-12-06 17:36:07 485
原创 字典树trie(根据大白书补全查询函数)
#include#include#include#includeusing namespace std;const int maxn = 301;const int max1 = 51;const int sigma_size = 26;char b[maxn][sigma_size];struct Trie{ int ch[maxn][sigma_size];
2014-12-04 14:26:53 1120
原创 hdu2149 -- Public Sale(博弈论)
Public SaleTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4594 Accepted Submission(s): 2778Problem Description虽然不想,但是现实总归是现实,Lel
2014-12-03 14:48:04 456
原创 hdu2147 -- kiki's game(博弈论)
因为每个坐标格的必胜或必败已经确定,只要画出P/N图就可以找出规律,获得代码:博弈论:组合博弈* 必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。* 必胜点(N点) :下一个选手(Next player)将取胜的位置称为必胜点。* 必败(必胜)点的属性:* (1) 所有终结点是必败点(P点);* (2) 从任何必胜点(N点)
2014-12-03 14:25:13 520
转载 博弈论入门小结
博弈论入门小结分类: ACM——博弈论 2011-02-08 16:00 4874人阅读 评论(5)收藏 举报 游戏算法cbash百度博弈论:是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不少博弈理论,可以帮助对弈者分析局势,
2014-12-03 14:19:47 504
原创 hdu1969 Pie(二分答案)
PieTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4312 Accepted Submission(s): 1735Problem DescriptionMy birthday is coming up a
2014-11-30 22:41:54 645
原创 hdu4190 Distributing Ballot Boxes(二分答案)
Problem DescriptionToday, besides SWERC'11, another important event is taking place in Spain which rivals it in importance: General Elections. Every single resident of the country aged 18 or over is
2014-11-30 22:38:24 851
原创 hdu2604 Queuing(矩阵快速幂 + DP)
QueuingTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2859 Accepted Submission(s): 1314Problem DescriptionQueues and Priority Q
2014-11-20 22:39:17 457
原创 hdu1280(比m大的数)---哈希表
前m大的数Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11163 Accepted Submission(s): 3866Problem Description还记得Gardon给小希布置的那个作业么?
2014-11-19 09:40:12 812
原创 哈希表(初步实现)
#include#include#include#includeusing namespace std;#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define Maxsize 100 //储存空间初始化分配量#define SUCCESS 1#define UNSUCCESS 0#define H
2014-11-18 21:08:22 470
原创 hdu1864(最大报销额 DP动态规划)
最大报销额Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16926 Accepted Submission(s): 4929Problem Description现有一笔经费可以报销一定额度的发票。允许报销的
2014-11-17 09:55:41 4676 9
原创 POJ2533(Longest Ordered Subsequence 最长公共子序列 DP或单调队列+二分)
Longest Ordered SubsequenceTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 34454 Accepted: 15135DescriptionA numeric sequence of ai is ordered ifa1 a2 a
2014-11-16 20:20:15 2881 1
原创 hdu4310 Hero(贪心)
HeroTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2658 Accepted Submission(s): 1196Problem DescriptionWhen playing DotA with go
2014-11-15 23:56:43 515
原创 Sticks POJ1011 hdu1455 (深度优先搜索DFS)
SticksTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 122528 Accepted: 28390DescriptionGeorge took sticks of the same length and cut them randomly until a
2014-11-15 21:33:10 773
原创 hdu1789(Doing Homework again 贪心)
Doing Homework againTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7011 Accepted Submission(s): 4164Problem DescriptionIgnat
2014-11-12 19:14:08 417
转载 素数筛法
素数筛法 素数是ACM中数论题目常常涉及到得问题。最基本的问题就是如何判断一个数是素数以及如何快速的打出题目涉及范围的素数表。当然数论中关于素数的问题会比较复杂,在这里仅就素数的不同筛法做出总结。 素数,就是只有1和自身两个约数的正整数。2是最小的素数。根据定义,我们就可以直接判断一个数字n是否是素数。优化后的复杂度是O(n*sqrt(n))。至于为什么,我就不做赘述了
2014-11-12 14:18:58 430
原创 hdu2124--Repair the Wall(贪心水题)
Repair the WallTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2158 Accepted Submission(s): 1057Problem DescriptionLong time ago
2014-11-12 11:39:31 779
原创 hdu1086-最少拦截系统(简单贪心)
最少拦截系统Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 19697 Accepted Submission(s): 7816Problem Description某国为了防御敌国的导弹袭击,发展出一种导弹拦
2014-11-12 10:33:57 500
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人