算法与数据结构
文章平均质量分 88
算法与数据结构相关博客
白水baishui
天光乍破
展开
-
DQN算法的时间复杂度分析
DQN算法的算法流程如下:时间复杂度:设:Initialize replay memory D\mathcal{D}D to capacity NNN (运行消耗t0t_0t0时间)Initialize action-value function QQQ with random weights (运行消耗t1t_1t1时间)for episode=1,Mepisode=1,Mepisode=1,M do (运行一次平均消耗t2t_{2}t2时间,重复运行MMM次)\qquad Initi原创 2021-05-21 08:17:19 · 5328 阅读 · 3 评论 -
m阶B树的非根非叶结点至少要ceil(m/2)个孩子原因
B树的定义中有一个规定:除根结点和叶结点之外,其他每个结点至少有⌈m2⌉\lceil\frac{m}{2}\rceil⌈2m⌉个孩子,至少要有⌈m2⌉−1\lceil\frac{m}{2}\rceil-1⌈2m⌉−1个关键字为什么要这样规定呢?我们假设现在有一棵深度为1的5阶B树:现在往B树中添加一个结点,在有限制的情况下是这样分裂的:如果没有对孩子结点和关键字个数进行限制,那么可以分裂出如下B树:可见,同样是5个关键字,有限制的5阶B树只有3个结点,而未进行限制的5阶B树却有4原创 2020-08-30 11:46:24 · 6827 阅读 · 4 评论 -
有向图的邻接表(Adjacency List)
listNode.h#ifndef __LISTNODE_H__#define __LISTNODE_H__class EdgeNode{public: int adjVex; EdgeNode * next;};template <class T>class VertexNode{public: T vertex; EdgeNode * firstEd...原创 2018-12-21 19:07:05 · 2508 阅读 · 0 评论 -
无向图的邻接矩阵(adjacency matrix)
MGraph.h#ifndef __MGRAPH_H__#define __MGRAPH_H__const int MaxSize = 10;template &amp;amp;amp;lt;class T&amp;amp;amp;gt;class MGraph{public: MGraph(T _maxtrix[], int _vertex, int _edge); ~MGraph();public: void DF...原创 2018-12-20 22:31:33 · 11603 阅读 · 0 评论 -
哈夫曼树(最优二叉树)与哈夫曼编码
huffmanNode.h#ifndef __HUFFMANNODE_H__#define __HUFFMANNODE_H__class huffmanNode{public: int weight; int lchild, rchild, parent;};#endifhuffmanTree.cpp#include &amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;gt;原创 2018-12-19 22:05:13 · 1024 阅读 · 0 评论 -
二叉树(Binary Tree)的二叉链表(Binary Linked List)实现
BinaryNode.h#ifndef __BINARYNODE_H__#define __BINARYNODE_H__template &amp;amp;lt;class T&amp;amp;gt;class BinaryNode{public: T data; BinaryNode&amp;amp;lt;T&amp;amp;gt; *lchild, *rchild;};#endif原创 2018-12-18 16:15:59 · 653 阅读 · 0 评论 -
字符串的模式匹配算法——BF算法与KMP算法
#include &amp;lt;iostream&amp;gt;#include &amp;lt;string&amp;gt;using namespace std;//BF算法实现int BF(string _str, string _patnStr){ int i = 0, j = 0; while ((_str[i] != '\0') &amp;amp;&amp;amp原创 2018-12-17 15:48:04 · 1721 阅读 · 7 评论 -
队列的顺序存储结构 循环队列(Circle Queue) C++
CirQueue.h#ifndef __CIRQUEUE_H__#define __CIRQUEUE_H__const int queueSize = 100;template &lt;class T&gt;class CirQueue{public: CirQueue(); ~CirQueue(); void EnQueue(T _data); T DeQueue();...原创 2018-12-13 20:38:45 · 1663 阅读 · 0 评论 -
栈的链式存储结构 链栈(Linked Stack) C++
StackNode.h#ifndef __STACKNODE_H__#define __STACKNODE_H__template &amp;lt;class T&amp;gt;class StackNode{public: T data; StackNode&amp;lt;T&amp;gt;* nextNode;};#endifStackList.h#ifndef __STACKLI原创 2018-11-03 10:44:17 · 896 阅读 · 0 评论 -
栈的顺序存储结构 顺序栈(Sequential Stack) C++
seqStack.h#ifndef __SEQSTACK_H__#define __SEQSTACK_H__const int size = 10;template &amp;lt;class T&amp;gt;class seqStack{public: seqStack(void); virtual ~seqStack(void);public: void push(T _data)...原创 2018-10-17 21:40:49 · 890 阅读 · 0 评论 -
线性表的链式存储结构 单链表(Singly Linked List) C++
节点定义:Node.h#ifndef __NODE_H__#define __NODE_H__template &amp;amp;lt;class T&amp;amp;gt;struct Node{ T data; Node&amp;amp;lt;T&amp;amp;gt; * next;};#endif单链表类定义:LinkedList.h#ifndef __LINKEDLIST_H__原创 2018-09-28 22:55:10 · 712 阅读 · 0 评论 -
线性表的顺序存储结构 顺序表(sequential list) C++
类定义SeqList.h#ifndef __SEQLIST_H__#define __SEQLIST_H__template&amp;amp;lt;class T&amp;amp;gt;class SeqList{public: SeqList(); SeqList(T *_data, int _length); virtual ~SeqList();public: int...原创 2018-09-16 23:58:25 · 661 阅读 · 0 评论 -
查找二维数组的鞍点
鞍点的定义为:鞍点元素是所在行中值最小的元素,是所在列中值最大的元素。要解决鞍点问题,我们可以对二维数组进行检索,找出每一行中有最小值的元素,然后找出该元素所在列中的最大元素,比较该列的最大元素的值与该元素的值。但是,必须考虑到,如果一个看似鞍点,但其所在行列却又元素大小与之相等,则这个“鞍点”不满足定义,所以它不是一个鞍点。综上,我们先判断行列最值,然后判断行列中是否有多个最值,如果有元素满足:既原创 2017-12-08 00:15:32 · 4555 阅读 · 0 评论 -
编程从键盘输入一个正整数n,判断该数的奇偶性,若为奇数输出“odd”,若为偶数输出“even”
#include "stdio.h"int main(void){ int n = 0; printf("please input a number:"); scanf_s("%d", &n); if (0 == n % 2) printf("even\n"); else printf("odd\n"); return 0;原创 2017-11-29 17:55:47 · 51781 阅读 · 175 评论 -
图解栈分析Hanoi Tower(汉诺塔)程序
汉诺塔程序伪算法:将 n 个盘子从 A 塔移动到 C 塔 分解为以下步骤: 1、将 A 塔上 n-1 个盘子借助 C 塔先移动到 B 塔; 2、将 A 塔剩下的第 n 个盘子移动到 C 塔; 3、将 B 塔上的 n-1 个盘子借助 A 塔移动到 C 塔;以下是代码:#include "stdio.h"void move(char from, char target){ printf原创 2017-12-26 21:03:35 · 5719 阅读 · 0 评论 -
算法:编程在一个已知的字符串中查找最长单词,假定字符串中只包含字母和空格,空格用来分隔不同单词
程序分析: 可以定义两个字符串,一个用来存放字符串,一个用来存储最长的单词。通过比较得到最长的单词,再通过元素下标来获取最长的单词。#include "stdio.h"#include "string.h"int main(void){ //定义两个数组,sentence储存字符串,word存储单词 char sentence[1024] = {}, word[64]原创 2017-11-25 16:39:41 · 5953 阅读 · 1 评论 -
算法:从键盘循环输入一个整数,判断是否是素数\质数
程序分析: 1、质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。 2、nn能被mm整除,则m≤n2m≤\frac{n}{2},所以只需要穷举m∈[2,n2]m∈[2, \frac{n}{2}]即可,若在穷举过程中出现了nn%m == 0的情况则n是质数,若mm能自加到m=n2m = \frac{n}{2}则n不是质数。#include "stdio.h"int main(void原创 2017-11-21 13:25:09 · 16536 阅读 · 4 评论 -
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
由题意我们可以设该数为x,加100后得到的完全平方数为y,再加168后得到的完全平方数为z,则有:原创 2017-09-10 15:46:40 · 28606 阅读 · 28 评论