
算法与数据结构
ZCAIHUI_
卷又卷不过,躺又躺不平
展开
-
关于因子分解的一类题型
1: 质因子分解思路:由于质因子分解是唯一的(算术基本定理),因此只需要枚举质因子(提前打表质数),计数即可。AC code:#include<bits/stdc++.h>using namespace std;const int maxn=100000;struct fac{ int x,cnt;};int p[maxn],num=0;//boo...原创 2020-04-02 21:48:47 · 339 阅读 · 0 评论 -
大整数乘法
思想:直接模拟乘法运算,最后统一处理进位。#include<bits/stdc++.h>using namespace std;int main(){ string s1,s2; while(cin>>s1>>s2){ if(s1=="0" || s2=="0"){ cout<<"0\n";continue; } ...原创 2020-04-02 16:19:24 · 199 阅读 · 0 评论 -
分数的四则运算
1.分数的表示struct Frac{ int up,down;}; 几个约定:1) 假分数形式2)分子需为非负数,否则分子、分母同时取反。2)若分子为0,则令分母为13)分子与分母没有1之外的公因子2.分数的化简---用于实现上述几个约定。Frac reduction(Frac result){//化简分数 if(result.down <0...原创 2020-04-02 16:05:57 · 608 阅读 · 0 评论 -
三元组最小距离
题目: 已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找一个元素,是的组成的三元组距离最小。三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为:Distance = max(|a[ I ] – b[ j ]|, |a[ I ] – c[ k ]|, |b[ j ] – c[ k ]|)请设计一个求最小三元组距离的最优算法,并分析时间...原创 2020-01-07 16:27:27 · 3081 阅读 · 1 评论 -
中缀转后缀
背景参考我的另一篇:表达式求值C++ code:#include<bits/stdc++.h>using namespace std;int pri(char op){ if(op =='*'|| op=='/') return 2; if(op=='+'|| op=='-') return 1; if(op=='(') return 0;} bool dea...原创 2019-09-07 21:19:48 · 173 阅读 · 0 评论 -
搜索专题之BFS
BFS一般用队列实现,且总是按层次的顺序进行的遍历,其基本写法如下:void BFS(int s){ queue<int> q; q.push(s); while(!q.empty()){ 取出队首元素top; 访问队首元素top; 队首元素出队; 将下一层结点中未访问过的结点全部入队,并设置...原创 2019-07-15 23:31:50 · 183 阅读 · 0 评论 -
二叉树的递归算法例题
二叉树递归算法:1. 统计二叉树中,度为0的结点个数2. 统计二叉树中,度为1的结点个数3. 统计二叉树中,度为2的结点个数4. 统计二叉树高度5. 统计二叉树宽度度6. 删除二叉树中所有叶子节点7. 交换每个节点的左右子女8. 判断一棵树是否为二叉排序树9. 找出给定结点在二叉树中的层次10. 判断二叉树是否为平衡二叉树首先,创建二叉树BiTre...原创 2019-03-25 23:05:42 · 2078 阅读 · 2 评论 -
栈和队列的简单应用
1:编写一个算法来判别表达式中的括号是否匹配,以字符"\0"作为算术表达式的结束符。(圆括号,花括号,中括号三种类型)基本思想:1)扫描每个字符,遇到花、中、圆的左括号进栈2)遇到花、中、圆的右括号时检查栈顶元素是否为对应的左括号。若是,退栈,否则配对错误。3)最后栈不为空也错误。 bool Check(char *str){ stack<char> s; i...原创 2018-11-28 22:05:46 · 394 阅读 · 0 评论 -
表达式求值
表达式求值表达式求值是程序设计语言编译中的一个最基本问题。它的实现是栈应用的又一个典型例子。这里介绍 “算符优先法” 进行求解。对算术表达式求值,首先要了解四则运算规律(1)先乘除,后加减(2)从左到右(3)先括号内,后括号外~~算符优先法就是根据这个运算优先关系的规定来实现对表达式的编译或解释执行这里讨论只含加减乘除4种运算,基于整数范围且语法正确的表达式求解分两步...原创 2018-10-07 15:50:00 · 22171 阅读 · 5 评论 -
单链表的插入,删除,查找,转置
单链表的定义线性表的链式存储又称为单链表,它是指通过任意一组的存储单元来存储线性表中的数据元素。 在单链表中,每个节点包含一个指向链表下一节点的指针。链表最后一个节点的指针字段的值为NULL,提示链表后面不再有其它节点。它是非随机存取的存储结构,操作时只能从表头开始遍历。 通常用 “头指针” 标识一个单链表,头指针为“NULL“ 表示空表,为了操作上的方便,在单链表的第一个节点前附加一个...原创 2018-09-14 20:55:48 · 416 阅读 · 1 评论 -
平衡二叉树
平衡二叉树1.平衡二叉树的定义为了避免树的高度增长过快,降低二叉排序树的性能,我们规定在插入和删除节点时保证节点左右子树的高度差绝对值不超过一,这样的树称为平衡二叉树(也称AVL树),定义节点的左右子树的高度差为该节点的平衡因子,则此值只能为-1,0,1.特性:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 引用2.作...原创 2018-09-12 21:40:27 · 635 阅读 · 0 评论 -
单链表题锦集
1.删除不带头节点的单链表L中所有值为x的结点思路1:递归算法void Delete_X(Linklist &amp;amp;amp;amp;L,ElemType x){ LNode *p; if(!L) return NULL; if(L-&amp;amp;amp;gt;data==x){ p=L; //删除 L,并让 l 指向下一个节点 L=L-&amp原创 2018-09-15 23:29:59 · 389 阅读 · 1 评论 -
1150 Travelling Salesman Problem
1150 Travelling Salesman Problem(25 point(s)) The “travelling salesman problem” asks the following question: “Given a list of cities and the distances between each pair of cities, what is the shortes...原创 2018-09-09 18:29:47 · 275 阅读 · 0 评论 -
1149 Dangerous Goods Packaging(25 point(s))
1149 Dangerous Goods Packaging(25 point(s))原创 2018-09-09 15:55:06 · 236 阅读 · 0 评论 -
1151 LCA in a Binary Tree(30 point(s))
1151 LCA in a Binary Tree原创 2018-09-09 14:12:24 · 1325 阅读 · 3 评论 -
二叉排序树
二叉排序树1.二叉排序树定义二叉排序树(BST),也称二叉查找树,亦称二叉搜索树。BST是一颗空树,或具有如下性质的非空二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; 由此定义可知,BST是一个递归的数据结构,且BST中没有键值相等的节点。如果我们...原创 2018-09-11 18:21:53 · 509 阅读 · 0 评论