第一节 多维随机变量及其联合分布
下载PDF点这里
BST(二叉搜索树)
问题描述
编写C++程序来实现执行以下操作:
向二叉搜索树中插入一个元素
从二叉搜索树中删除一个元素
显示所有叶子节点
遍历给定的二叉树
深度优先算法
中序遍历
前序遍历
程序描述:
这个程序旨在通过各种操作来管理一个二叉搜索树(BST),如插入、删除、显示叶子节点和根据用户选择的方式遍历树。BST是一个基本的数据结构,它保持元素以排序的顺序存储,以便高效地进行搜索、插入和删除操作。每个节点包含一个键值和指向左右子节点的指针。节点的左子树仅包含键值小于该节点键值的节点,而右子树仅包含键值大于该节点键值的节点。
该程序实现的操作包括:
插入:提示用户依次输入元素到BST中。
删除:询问用户要从BST中删除的特定元素。
显示叶子节点:遍历BST并显示所有叶子节点(没有子节点的节点)。
树遍历:允许用户选择中序遍历和前序遍历方法来遍历和显示树。
实现代码
#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <stdio.h>using namespace std;/ ...
类的组合作业2
问题描述
有代码如下。请运行程序,并按照要求完成如下任务。
1、请分析代码的运行结果,并画出程序运行期间,内存分配情况;
2、请在程序中添加Point的析构函数和Line的析构函数。在两个析构函数中只需要进行信息输出即可。请给出修改后的完整代码,并将自己添加的代码用红色标出;
3、运行加入析构函数后的代码,分析其运行结果,并说明其与未加析构函数的时候的结果的不同之处,并说明原因;
4、请将程序中语句Line(Point pp1,Point pp2):p1(pp1),p2(pp2),修改为Line(Point &pp1,Point &pp2):p1(pp1),p2(pp2)。然后运行程序,说明修改前后程序的运行结果区别及其原因。
#include<iostream>#include<math.h>using namespace std;class Point {public: Point(int a,int b) { x=a; y=b; cout<<"构造了一个点"<<" ...
字典树
Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。
题目描述
维护一个字符串集合,支持两种操作:
I x 向集合中插入一个字符串x;
Q x 询问字符串x在集合中出现了多少次。
共有n个操作,所有输入的字符串总长度不超过 10510^5105 ,字符串仅包含小写英文字母。
输入格式
第一行包含整数n,表示操作数。
接下来n行,每行包含一个操作指令,指令为 I x 或 Q x 中的一种。
输出格式
对于每个询问指令 Q x,都要输出一个整数作为结果,表示x在集合中出现的次数。
每个结果占一行。
数据范围
1≤N≤2×1041≤N≤2×10^41≤N≤2×104
解答
#include<iostream>using namespace std;const int MA ...
KMP字符串
一个人能走的多远不在于他在顺境时能走的多快,而在于他在逆境时多久能找到曾经的自己。 — KMP
题目描述
给定一个字符串text,以及一个子串sub,所有字符串中只包含大小写英文字母以及阿拉伯数字。
子串sub在字符串text中多次作为子串出现。
求出子串sub在字符串text中所有出现的位置的起始下标。
输入格式
第一行输入整数n,表示字符串sub的长度。
第二行输入字符串sub。
第三行输入整数m,表示字符串text的长度。
第四行输入字符串text。
输出格式
共一行,输出所有出现位置的起始下标(下标从0开始计数),整数之间用空格隔开。
数据范围
1≤n≤1051≤n≤10^51≤n≤105,1≤m≤1061≤m≤10^61≤m≤106
可以先看灯神的讲解后,再来看代码。
#include<iostream>using namespace std;const int N = 1e5 + 10, M = 1e6 + 10;int nex[N], n, m; // nex数组,n为子串长度,m为文本长度char text[M], sub[N]; // text为文 ...
第二节 常数项级数的审敛法
下载PDF点这里
第一节 常数项级数的概念和性质
下载PDF点这里
折半查找之范围查找
题目描述
利用折半查找算法进行范围查找。所谓范围查找是要找出在给定值 aaa 和 bbb 之间的所有元素 (a≤b)(a\leq b)(a≤b) 。
输入格式
(1)第1行是序列中的元素个数
(2)第2行是有序序列(数与数之间用空格分隔)
(3)第3行是下限和上限(用空格分隔)
输出格式
指定范围内的所有元素(数与数之间用空格分隔)
示例
输入(Input):
8
1 3 4 6 7 8 9 15
5 10
输出(Output):
6 7 8 9
代码
#include <iostream>#include <stack>using namespace std;const int MAX_SIZE = 100;void find(int min, int max, int r[MAX_SIZE], int low, int high) { int mid = (low + high) / 2; if(r[mid] < min) { // 分治求解左侧范围 find(min, max, r, mid, high); ...
第六节 随机变量函数的分布
下载PDF点这里
第五节 常用连续分布
下载PDF点这里
第四节 常用离散分布
下载PDF点这里
第三节 随机变量的方差与标准差
下载PDF点这里