![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法技巧
文章平均质量分 68
算法学习/面试/比赛的技巧、注意事项。
五角场的夜风
同步做人,异步做事。
展开
-
C语言算法之将十进制数转换成二进制数
导语:在C语言中没有将其他进制的数直接输出为二进制数的工具或方法,输出为八进制数可以用%o,输出为十六进制可以用%x,输出为二进制就要我们自行解决了。下面给大家讲述一下如何编程实现将十进制数转换成二进制数。先将源代码展示给大家:#include <stdio.h>void main(){ //进制转换函数的声明 int transfer(int x)...原创 2018-06-20 14:35:29 · 170732 阅读 · 37 评论 -
二叉树的基本操作(C语言)
要介绍二叉树的基本操作,首先介绍一下二叉树的结点:typedef struct node{ char data; struct node *lchild; struct node *rchild;}BiTNode;包括该结点的值、指向左孩子的指针和指向右孩子的指针。1.先序构造二叉树BiTNode *creatBiTree(){ char...原创 2018-12-25 09:46:00 · 8717 阅读 · 2 评论 -
C++大数加法(字符串加法)
string add(string a,string b){ string ret=""; reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); int lena=a.size(); int lenb=b.size(); int i=0,j=0; int c=0; whil...原创 2020-01-15 17:12:14 · 1875 阅读 · 2 评论 -
double的输入和输出
用scanf输入double类型变量的时候,一定要用%lf,代码如下所示:double temp;scanf("%lf",&temp);用printf输出的时候,一定要用%f,假设保留两位小数输出,代码如下所示:printf("%.2f\n",temp);...原创 2020-01-25 13:47:06 · 2528 阅读 · 0 评论 -
数学题模板
1.素数的判断bool isPrime(int n){ if(n<2) return false; int i; for(i=2;i<=sqrt(n);i++) { if(n%i==0) { return false; } } return t...原创 2020-01-25 13:43:57 · 647 阅读 · 0 评论 -
STL的常见用法
1.vector#include <cstdio>#include <vector>using namespace std;vector<int> arr;int n;int main(){ scanf("%d",&n); //为arr分配初始容量为n+1个元素 //arr的下标为0-n //默认所有元素...原创 2020-01-25 13:44:52 · 280 阅读 · 1 评论 -
二叉搜索树的建立
建立二叉搜索树的过程,就是将一个一个数插入数集的过程,只不过数集的结构是一棵二叉树。红黑树就是一棵平衡二叉搜索树。插入一个数,开始将该数与树中的结点比较,从根节点开始。如果根结点就是空的,直接将该数放在根的位置;否则,与根节点的值相比较,比其小则该数肯定插在根节点的左子树上,比其大则该数肯定插在根节点的右子树上。以以上算法为依据写出插入函数的代码如下(color代表节点的颜色,true为黑...原创 2020-01-25 13:47:24 · 2433 阅读 · 0 评论 -
PAT中的常见坑点
1.注意输出格式,有些整数要求按照要求输出,比如要求输出5-digit的数,不足5位的必须在前面补0,这样输出printf(“%05d”,now)即可。例题:1153 Decode Registration Card of PAT(25分)。2.注意scanf用在循环体中的情况,让你输入k行,每行都让你输入:n a1 a2 a3 a4 ... an这个时候每一行的n的输入都会被放在...原创 2020-01-25 13:46:13 · 922 阅读 · 0 评论 -
最小生成树(并查集+Kruskal算法)
最小生成树问题(MST)是为了解决以最低的花费连接所有的点(使图的连通分量的数目为1)而提出的。上并查集+Kruskal算法求解最小生成树问题的代码:#include <cstdio>#include <algorithm>using namespace std;struct edge{ int from; int to; int ...原创 2020-01-25 13:44:13 · 556 阅读 · 0 评论 -
PAT(Advanced Level)中常见的专业英语
heap 堆:a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either greater than or equal to (in a max heap) or less t...原创 2020-01-25 13:46:51 · 1071 阅读 · 0 评论 -
Djikstra算法求解最短路径问题
#include <cstdio>#include <algorithm>#include <cstring>#include <vector>using namespace std;const int INF=0x3f3f3f3f;int mp[1001][1001];int d[1001];bool vis[1001];vec...原创 2020-01-25 13:43:26 · 388 阅读 · 0 评论 -
DAG拓扑排序
一个庞大的、复杂的系统工程,往往有一些步骤需要先完成某些工作才能进行,于是要想高效地完成整个工程,就要搞清楚先完成哪些工作,再完成哪些工作,也就是完成的先后顺序。举个简单的例子,计算机专业的学生需要完成整个学业需要学习很多课程,而这些课程之间是相互关联的,不学会一门编程语言(比如C++)就不能学习数据结构,这样编程语言就叫做数据结构的先导课程,需要先学习编程语言再学习数据结构。DAG拓扑排序算法应...原创 2020-01-25 13:47:04 · 775 阅读 · 0 评论 -
二叉树的构造(C++)
已知先序序列(preorder)和中序序列(inorder),构造出的二叉树是唯一的。已知后序序列(postorder)和中序序列(inorder),构造出的二叉树是唯一的。先序、中序序列构造二叉树,然后先序遍历:#include <cstdio>#include <vector>using namespace std;//声明结点struct nod...原创 2020-01-25 13:46:39 · 5341 阅读 · 0 评论 -
深搜回溯与不回溯的区别
一、需要不断尝试以达到最终目的时需要回溯,比如数独、全排列。以下为全排列代码:#include <iostream>#include <vector>#include <algorithm>using namespace std;string str;string temp;vector<bool> vis;void dfs(...原创 2020-03-13 12:09:09 · 1937 阅读 · 0 评论 -
手撕归并排序
#include <cstdio>#include <vector>using namespace std;void Merge(vector<int> &arr,int low,int mid,int high){ int i=low; int j=mid+1; vector<int> temp; ...原创 2020-03-13 12:11:11 · 213 阅读 · 0 评论 -
最长上升子序列
lower_bound(arr.begin(),arr.end(),val):在一个从小到大排好序的数组arr的[begin,end)区间通过二分查找返回第一个大于等于val的位置。upper_bound(arr.begin(),arr.end(),val):在一个从小到大排好序的数组arr的[begin,end)区间通过二分查找返回第一个大于val的位置。lower_bound(arr....原创 2020-03-13 12:10:12 · 118 阅读 · 0 评论 -
手撕快速排序
#include <cstdio>int arr[]={3,2,1,0,5,6,4,9,11,8};int oneRound(int arr[],int low,int high){ int key=arr[low]; while(low<high) { while(low<high) { ...原创 2020-03-13 12:11:24 · 209 阅读 · 0 评论 -
PAT特殊错误
1.浮点错误除数为0就会报浮点错误。2.段错误有可能是数组越界,也有可能是队列、栈等已经空了而继续出队、出栈导致的。3.空间超限使用<cstring>下的初始化函数memset可能会导致空间超限,虽然开的数组不足以使空间超限,但是我们都知道使用memset初始化比较方便快捷,世间万物都遵循等价交换规则,方便快捷也是有代价的,那就是用空间来换时间。我以前总是使用mem...原创 2020-01-25 13:47:37 · 898 阅读 · 0 评论