
数据结构
文章平均质量分 69
keyboarder_zsq
你所认为的极限,其实是别人的起点。
展开
-
萌新学习笔记之哈夫曼树
哈夫曼树的定义:假设有n个权值{ w1,w2 , ... , wn},构造有n个叶结点的二叉树,每个叶结点的权值是n个权值之一,这样的二叉树可以构造很多棵,其中必有一棵是带权路径长度最小的,这棵二叉树就称为最优二叉树或哈夫曼树;typedef struct TreeNode* HuffmanTree;struct TreeNode{ int Weight; Huffm原创 2016-11-20 10:45:54 · 723 阅读 · 0 评论 -
铁轨+卡片游戏【栈+队列】
1280: 铁轨时间限制: 1 Sec 内存限制: 128 MB提交: 118 解决: 59[提交][状态][讨论版]题目描述 某城市有一个火车站,铁轨铺设如图所示。有n节车厢从A方向驶入车站,按进站顺序编号为1~n。你的任务是让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,原创 2017-03-10 16:53:25 · 605 阅读 · 0 评论 -
散列查找--解决冲突的方法
yep.原创 2016-12-22 22:57:45 · 1617 阅读 · 0 评论 -
数据结构题
hzwer's blog音乐会的等待【单调栈】铁轨+卡片游戏【栈+队列】Codeforces570C【标记】原创 2017-03-10 17:58:30 · 148 阅读 · 0 评论 -
萌新笔记之插入排序
插入排序对象:一条杂乱无章的数组 实现:从小到大。 在说希尔排序之前,先说说简单插入排序:1.简单插入排序:简单插入排序的核心思想:把一条这么个难看的序列默认分为两个排好序的和为排好序的两个部分;所以一开始排好序的只有一个(好看的只有一个),难看的有N(数组长度)-1个;然后呢,你就要顺序下来,把一个个难看的几个人插到好看的那一堆里去,好看的越来越多,难看的越来越少,最后变成了真的好看的;简原创 2017-01-11 22:03:58 · 422 阅读 · 0 评论 -
PAT12-012【建最小堆】
卧槽。。没看清 值 还有负的。。PS: 注意他说是一个一个插入的,也就是插在完全二叉树的最末位置,然后向上更新。#includeusing namespace std;typedef long long LL;int a[1010];void BuildMinHeap(int n){ for(int i=1;i<=n;i++) { scanf("%d",&a[i]);原创 2017-03-13 00:44:47 · 392 阅读 · 0 评论 -
萌新二叉树学习笔记
yep..原创 2016-10-14 20:13:35 · 452 阅读 · 0 评论 -
PAT L2-006【二叉树中序后序构造树】
#includeusing namespace std;typedef long long LL;struct BT{ int w; BT *L; BT *R;};BT* Creat(int *post,int *in,int n){ BT* p; for(int i=0;i<n;i++) { if(post[n-1]==in[i]) { p=(BT*)m原创 2017-03-13 23:13:09 · 366 阅读 · 0 评论 -
PAT1098【插入排序+堆排序】
very yes.原创 2017-03-12 16:55:20 · 460 阅读 · 0 评论 -
PAT1089【归并排序】
这题略。。。恶心。。他说归并排序依次是相邻有序两块合并,而一向打惯了递归???#include using namespace std;typedef long long LL;const int N=1e2+10;int b[N];void Merge(int a[], int temp[], int Left, int Mid, int Right){ int原创 2017-03-15 00:14:31 · 423 阅读 · 0 评论 -
PAT L3-010【完全二叉树】
静态建树判一下1-n是不是为空就好了,如果有空的 就说明不是complete binary tree(和线段树建树差不多啊)Left=2*root;Right=2*root+1#include using namespace std;typedef long long LL;struct BT{ int Left; int Right; int w;}q[200原创 2017-03-24 15:30:46 · 524 阅读 · 0 评论 -
最小堆【总结附简易代码】
yes, very good.原创 2017-03-13 12:39:32 · 739 阅读 · 0 评论 -
51nod1255【贪心-栈的应用】
思路:大体可以看到:大的越后面越好,但是首先要保证如果他对于一个比他小的字符后面存在他。主要操作就是利用栈,每次对栈里的元素询问是否比他大,且他的后面还存在。#includeusing namespace std;char s[100010];int len,num[27];bool vis[27];stackq;vectorxs;int main(){ xs.cle原创 2017-03-09 23:17:30 · 450 阅读 · 0 评论 -
PAT 1043【BST与二叉树】
nice.原创 2017-03-19 10:22:49 · 536 阅读 · 0 评论 -
萌新笔记之堆(heap)
前言(萌新感想):以前用STL的queue啊stack啊priority_queue啊,一直很想懂原理,现在终于课上到了priority_queue,还有就是下周期中考,哈哈,所以写几篇blog总结一下。这里萌新讲下堆这个好东西;堆的定义:如果搞过ACM的童鞋应该会使用STL的priority_queue,堆就是STL的priority_queue。堆是一种特殊的队列,从堆原创 2016-11-18 15:47:15 · 407 阅读 · 0 评论 -
萌新学习笔记之线性表
线性表的定义:“线性表”(Linear List)是有同一类是类型的数据元素构成的有序的线性结构。线性表的顺序存储实现:线性表的顺序存储是指在内存中地址连续的一块空间顺序存放线性表的各元素。(萌新怒插:这不就是数组嘛???需要说的那么麻烦么???哦。)一维数组在内存中占用的空间就是一组连续的存储区域,因此,用数组来表示存储的数据区域是再合适不过的。为了体现数据组织的整体原创 2016-12-12 16:36:36 · 507 阅读 · 0 评论 -
5-4 搜索树判断 (25分)
5-4 搜索树判断 (25分)对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。输入格式:输入原创 2016-11-21 23:33:42 · 1625 阅读 · 0 评论 -
PTA 4-3 二叉树的遍历
//左根右void InorderTraversal( BinTree BT ){ if(BT) { InorderTraversal(BT->Left); printf(" %c",BT->Data); InorderTraversal(BT->Right); }}//根左右void PreorderTravers原创 2016-11-14 22:03:42 · 2001 阅读 · 0 评论 -
5-6 笛卡尔树 (25分)
5-6 笛卡尔树 (25分)笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2。首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大。其次所有结点的K2关键字满足优先队列(不妨设为最小堆)的顺序要求,即该结点的K2值比其子树中所有结点的K2值小。给定一棵二叉树,请判断该树是否笛卡尔树。输入格式:输入首先给出正整数N(\原创 2016-11-22 00:56:03 · 1902 阅读 · 2 评论 -
5-7 是否同一棵二叉搜索树 (25分)
5-7 是否同一棵二叉搜索树 (25分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给原创 2016-11-22 12:52:59 · 3513 阅读 · 0 评论 -
萌新循环队列学习笔记
循环队列:队列最简单的表示方法就是数组啊;用数组表示队列,那么普通的方法就是简单的搞两个下标代表队列头,队列尾,然后进队,出队,但是随着入队,出队操作的进行,会使整个队列整体向后移动,队尾指针已经移到了最后,再有元素入队就会溢出,而事实上此时队中并未真的“满员”,这种现象称为“假溢出”。为了解决队尾溢出而实际上数组仍然有空余空间的问题,一般在队列的顺序存储结构中采用循环队列的方式:原创 2016-11-22 16:40:28 · 461 阅读 · 0 评论 -
【经典汉诺塔的路径】
#include <iostream>#include <stdio.h>#include <string.h>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <math.h>#include <algorithm>using namespace std;原创 2016-07-08 18:53:48 · 630 阅读 · 0 评论 -
5-2 Windows消息队列 (25分)
5-2 Windows消息队列 (25分)消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。输入格式:输原创 2016-11-23 09:18:58 · 1306 阅读 · 0 评论 -
5-5 城市间紧急救援 (25分)【最短路spfa】
5-5 城市间紧急救援 (25分)作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数NN、M原创 2016-11-24 22:35:08 · 1162 阅读 · 0 评论 -
5-4 公路村村通 (30分)【简单的最小生成树】
5-4 公路村村通 (30分)现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数NN(\le 1000≤1000)和候选道路数目MM(\le 3N≤3N);随后的MM行对应MM条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建原创 2016-11-24 22:54:37 · 1391 阅读 · 0 评论 -
萌新笔记之二叉搜索树(BST)
前言,以前搞过线段树,二叉树觉得也就那样= =、然后数据结构的课也没怎么听过,然后下周期中考。。。 本来以为今天英语考完可以好好搞ACM了,然后这个数据结构期中考感觉会丢人,还是好好学习一波。二叉搜索树(BST,Binary Search Tree) 又称二叉排序树或二叉查找树。二叉搜索树 是一棵二叉树,它可以为空。特性(保证键值都不相同): ①:非空左子树的所有键值都小于根节点的键值; ②原创 2016-11-16 09:29:56 · 760 阅读 · 1 评论 -
萌新笔记之交换排序
1.冒泡排序听名字还挺可爱的,冒泡(●’◡’●)。 为啥叫冒泡呢? 算法原理是:对N个元素进行排序,进行N-1次循环,在对第k次循环中,会在N-k个元素从前往后进行比较,每次比较相邻的两个元素,若前一个元素大于后一个元素,就交换,否则保持位置不变。所以每次排序一定能保证当前第k大的回落到第N-k个位置,称为第k趟的冒泡。 所以每次就是拿了一个最大的往后跑,抱住一个gfd就往后跑。 代码:vo原创 2017-01-11 22:23:45 · 108 阅读 · 1 评论