算法
文章平均质量分 75
蒙昧的自己
这个作者很懒,什么都没留下…
展开
-
动态规划中的导弹拦截问题
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所原创 2015-11-05 16:10:41 · 974 阅读 · 0 评论 -
LL(1)文法分析,自上向下
//考虑LL(1)递归方式解决#include#includeusing namespace std;//声明变量,用来只是字符串内的指针int indexString = 0;//判断表达式中括号对是否匹配bool flag = true;//输入表达式的字符串string str;/*///////////////////////////////////////原创 2016-05-18 18:23:39 · 605 阅读 · 0 评论 -
LR分析器,自下向上分析法
#include#include#include#include#includeusing namespace std;void goto_Function(string state, string symbol);void movies(string state, string symbol);//在主函数开始时,进行初始化stackState;stackSymbol;原创 2016-05-17 23:26:50 · 459 阅读 · 0 评论 -
快速排序算法中的partition函数的应用
#include#includeusing namespace std;//根据已经给出位置的基准数来对数组进行排序void partition_pos(int arr[], int left, int right, int pos);//给出相应的值来确定位置,并根据它来进行排序void partition_value(int arr[], int left, int right,原创 2016-05-30 16:28:59 · 708 阅读 · 0 评论 -
排序算法中的快速排列中的partition函数
#include#includeusing namespace std;/* 算法思想:根据一个基准数,每一次执行过后都会所有的比基准数大的都会在他的右边 比他小的都会在基准数的左边*/int partition(int arr[], int left, int right);void QuitSort(int arr[], int left, int right);int原创 2016-05-30 15:57:21 · 636 阅读 · 0 评论 -
页面置换算法 FIFO,OPT,LRU
////LRU页面置换算法,将帧内最近不常使用的置换出#include#include#include#includeusing namespace std;int returnMaxValueInVec(vectorstr){ int postion = 0; int length = str.size(); if (str.size() == 0) { return原创 2016-05-25 14:53:45 · 2823 阅读 · 0 评论 -
快速排序
//对快速排序算法的理解,主要是分步进行排序,每次理论上只能对一个数字进行准确排位//所以n个数,需要n次排序,算法复杂度为O(nlogn),通过谷歌,和快拍可相媲美的排序算法//是最小堆的优先队列(有关于最小堆的问题,在关于最小堆的那片博客中,我有代码说明),感兴趣的朋//友,可以去看一下,希望能够剔除一些建议,谢谢#includeusing namespace std;void sort(原创 2015-12-15 23:33:48 · 352 阅读 · 0 评论 -
优先队列的初始化,删除,插入操作
//头文件//BinaryTreeNode.h#ifndef BINARYTREENODE_H#define BINARYTREENODE_Htemplateclass BinaryTreeNode{public: T data; int position; BinaryTreeNode* leftChild; BinaryTreeNode* rightChild; Bina原创 2015-11-27 23:21:50 · 809 阅读 · 0 评论 -
关于二叉树宽度的算法包括递归和非递归
//方法1:关于递归算法的实现,递归算法的实现包含两个函数,在这个函数中需要借助数组来实现//实现的具体方式,是在循环遍历的过程中,将每一层中的节点数都存储到相应的数组空间中//在对二叉树进行遍历结束后,在对数组进行处理,便可以获得,相应的二叉树的宽度//子啊该方法的实现机制中,利用了辅助函数//方法2:关于非递归的算法,就是利用队列的原理,这一原理在求树的深度那一篇博文,便已经涉及到了//他的原原创 2015-11-16 23:09:39 · 4783 阅读 · 0 评论 -
给出先序序列,中序序列恢复二叉树
//给出先序序列,中序序列恢复出二叉树的方法//方法1:利用递归的方法,首先先找出根节点,然后有先序和后序的特点可知:先序序列中在根节点左边的是左子树,根节点右面的是右子树//有此来,进行递归,便可以恢复出二叉树//方法2:方法2中栈的利用只是来存取,节点和先序中每个数据在后序的位置,利用pos 来记录每个位置的值//该非递归的主要思想就是在后序序列中左节点的位置在右节点之前,也就原创 2015-11-15 21:14:24 · 860 阅读 · 0 评论 -
给出二叉树,将二叉树进行中序线索化,在根据中序线索化二叉树,找出给定节点的前序后继节点,和给出节点的后序后继节点
该程序,最部分功能进行了详细的说明,在给别程序块中给出了详细的算法和注释#ifndef BINARYTREENODE_H#define BINARYTREENODE_Htemplateclass BinaryTreeNode{public: T data; int leftTag; int rightTag; BinaryTreeNode* leftChild; Binary原创 2015-11-20 13:00:08 · 3692 阅读 · 6 评论 -
计算树的深度,存储结构是二叉链表
//在二叉树中如何获得树的深度//方法1:递归算法--先计算出左右子树的深度,之后比较两者之间的大小关系,取大的那个数值,然后将此数值加一后返回//该返回值,即树的深度//方法2:利用队列,每遍历树的一层,就将树的深度deepth+1//该方法要注意的地方:1,设置变量获取每一层中的节点数,然后根据该节点数做循环,每循环一次都要将该节点//从队列里删除,并将该节点的左右孩子入队//2,特殊点是每一原创 2015-11-14 17:32:05 · 1471 阅读 · 0 评论 -
kmp字符串匹配算法
//头文件#ifndef KMP_H#define KMP_H#include#includeusing namespace std;class kmp{private: string value, pString; int *pStr;//特征向量public: void setValue(); string getValue(); void原创 2015-11-09 16:36:36 · 316 阅读 · 0 评论 -
银行家算法的实现,有关进程资源分配的算法
的#include 的#include 的#include 使用命名空间std;typedef结构{ //进程号 INT numberOfThread; //该进程对每个资源的需求量 INT countOf_A,countOf_B; INT countOf_C; //该进程是否完成 布尔isFinish;Infor公司};//在银行家算法中,总共需要4个向量//原创 2016-06-27 16:42:38 · 4666 阅读 · 0 评论