图的表示
邻接矩阵实现12345678910111213141516171819#define MAXN 10001int G[MAXN][MAXN], Nv, Ne;void BuildG() { int u, v, w; cin >> Nv; /*CreateGraph*/ for (int i = 0; i < Nv; i++) { for (int j = 0; j < Nv; j++) { G[i][j] = 0; } } cin >> Ne; for (int i = 0; i < Ne; i++) { cin >> u >> v >> w; /*InsertEdge*/ G[u][v] = w; G[v][u] = w;//针对无向图,双向建边 }}
AutoCAD
[TOC]
CAD是先设置相关样式,后绘制
命令MENUBAR(菜单模式)
0 非标准菜单模式
1 标准菜单模式
GRID(辅助栅格)
显示/不显示
开(ON) 关(OFF) 捕捉(S) 主(M) 自适应(D) 界限(L) 跟随(F) 纵横向间距(A)
OP(界面设置)
界面设置
再次按下回车可以重复运行上次的指令
CTRL+o(全屏)QS(快速保存)LA(图层命令)
图层命令
Z(缩放)绘制相关L(直线) PL(多段线)> 注意 **相对坐标**
REC(矩形)> 参数:
>
> E (完全显示)
LW(线宽)SPL(曲线)
完成闭合曲线后,输入c(闭合)
X将一条线段分为两条
O(偏移命令)
按键后输入偏移值
U
U == ctrl+z
TR(修剪)
按键后按T,选择剪切边,回车,再次选择,被选择线与剪切边间的线将被剪切
CO(copy)
选完后回车
选择基准点,选完后要求选新的基准点
文字相关MT(多行文字)DT(单行文字)ST(文字样式)DDEDIT(文字编辑)B(块定义)BEDIT( 编辑块定义)线MLSTY(多线样式)默认的多 ...
二叉搜索树(BST)
[TOC]
性质二叉搜索树本质上还是一棵二叉树,其满足以下性质(习惯性定义为):
非空左子树的所有键值小于其根结点的键值
非空右子树的所有键值大于其根结点的键值
左右子树都是二叉搜索树
基本函数1234567891011121314//从二叉搜索树BST中查找x,返回结点地址Poi Find(ElementType x, BinTree BST);//从二叉搜索树BST中查找最小元素的结点地址Poi FindMin(BinTree BST);//从二叉搜索树BST中查找最大元素结点地址Poi FindMax(BinTree BST);//向二叉搜索树BST插入值为x的结点BinTree Insert(ElementType x, BinTree BST);//向二叉搜索树BST删除值为x的结点BinTree Delete(ElementType x, BinTree BST);
Find12345678910111213BiNode* BiSearchTree::Find(int x, BiNode* BST){ if (!BST) return nullptr; if ...
二叉树的遍历序列转换
前序中序转后序输入#112ABEDFCHGCBADEFGH
输出#11AEFDBHGC
针对二叉树的
前序遍历,根->左->右
中序遍历,左->根->右
这两个的特性
我们可以尝试凭借前序遍历的根结点(叶子结点也可以看错左右儿子为空的根)将中序遍历的左右根依次拆分成左右两块,针对左右两块再次递归操作
12345678910111213141516171819void _find(string InOrderStr, string PreOrderStr){ if (PreOrderStr.empty())return;//针对前序遍历序列(拆分出的序列的)的根结点访问结束 char root = PreOrderStr[0]; PreOrderStr.erase(PreOrderStr.begin());//根结点取出,作为拆分标识 int rootidx = InOrderStr.find(root); string leftIn = InOrderStr.substr(0,rootidx); // ...
二叉树的同构
关于二叉树的同构
一种可行的方法(基于数组的二叉树)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105struct ArrTree { char data; int left; int right;}A1T[100], A2T[100];//bool check[100];//////////////////////////////////////////////////////////////////////////////////构建函数,基于数组的二叉树//////////////////////////*构建输入的例子:可以从根结点开始8A 1 2B 3 4C 5 -D - -E 6 -G 7 ...
二叉树的遍历
先序遍历
根->左子树->右子树
1234567void BiTree::PreOrder(BiNode* B) { if (B) { cout << B->data << endl; PreOrder(B->left); PreOrder(B->right); }}
中序遍历
左子树->根->右子树
1234567void BiTree::InOrder(BiNode* B) { if (B) { PreOrder(B->left); cout << B->data << endl; PreOrder(B->right); }}
后序遍历
左子树->右子树->根
1234567void BiTree::PostOrder(BiNode* B) { if (B) { PreOrder(B->left); PreOrder(B->righ ...
树的表示
链表实现AY)I~IDK7LK.gif)stDo.webp)
图中右下角的样式不统一,若统一为3项,则有大量空间浪费,不妨如此这般
左侧结点存储儿子,右侧结点存储兄弟
这样的表示方式为:二叉树
单调栈
帮助群友♂♂(AC),就是帮助自己
单调栈
单调递增栈:单调递增栈就是从栈底到栈顶数据是从小到大(一般)
单调递减栈:单调递减栈就是从栈底到栈顶数据是从大到小
(我们只会用到单调栈的一端)
E.g: 单调递增栈加入数据:::堆栈实现(栈顶为最大值)
1234567891011121314151617181920stack<int> st;//栈顶为最大值void _add(const int& x) { if (st.empty() || st.top() > x){ st.push(x); } else{ stack<int> tmp; while (!st.empty() && st.top() < x) { tmp.push(st.top()); st.pop(); } st.push(x); while (!tmp.empty()) { st.push(tmp.top()); tmp.pop(); } ...
《树》
树(Tree)
n(n≥0)个结点构成的有限集合
n=0时,称为空树
对于任意一颗非空树,它具有以下性质:
树中有一个称为”根(root)“的特殊节点,用root表示
其余结点可分为m(m>0)个互不相交的有限集$T_1$ $T_2$…$T_m$,其中每个集合本身又是一棵树。称为原来树的”子树(SubTree)“
子树不相交
除根节点外,每个结点有且仅有一个父结点
一棵N个结点的树有N-1条边
(树是保证所有结点连通的一种最小连通方式之一)
相关术语结点的度 :结点的子树个数
树的度:树的所有结点中最大的度数
叶结点:度为0的点
父结点:有子树的结点是其子树的根结点的父结点
子结点:若A结点是B结点的父结点,则称B结点是A结点的子结点
兄弟结点:具有同一父结点的各结点彼此是兄弟结点
路径和路径长度:从结点$n_1$到$n_k$的路径为一个结点序列$n_1$,$n_2$,…,$n_k$,$n_i$是$n_i+1$的父结点。路径所包含边的个数为路径的长度
祖先结点(Ancestor):沿树根到某一结点路径上的所有结点都是这个结点的祖先结点
子孙结点(Descendant ...
大杂烩
[TOC]
动态规划P8784 蓝桥杯 2022 省 B - 积木画 1234567891011121314151617181920const int mod = 1000000007;int f[6] = { 0,1,2,5 };signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; for (int i = 4; i <= n; i++) { f[i] = (2 * f[i-1] % mod + f[i-3] % mod) % mod; } cout << f[n]; return 0;}
P8786 蓝桥杯 2022 省 B - 李白打酒加强版 12345678910111213141516171819202122232425262728293031const int mod = 1000000007;i ...


