笔记
zyhawa
wanna be your friend
展开
-
初探广搜
先上个模板 有点类似树的层序遍历,其实层序遍历也可以看作是一种广度优先搜索。 void bfs(int s){ //定义队列q,并将起点s入队 queue<int> q; q.push(s); while(!q.empty()){//队列非空时 取队首元素top;//先取出队首元素进行操作 访问队首元素top; 将队首元素出队; //将top下一层的未入队节点全...原创 2020-04-01 17:51:18 · 112 阅读 · 0 评论 -
快排模板
void quicksort(int a[],int left,int right){ int mid=a[(left+right)/2]; int i=left,j=right; do{ while(a[i]<mid) i++; while(a[j]>mid) j--; if(i<=j) swap(a[i],a[j]),i++,j--; }while(i&...原创 2020-03-13 14:33:49 · 268 阅读 · 0 评论 -
背包问题(dfs剪枝优化)
时间复杂度指数级 剪枝操作确实可以减去数倍的计算时间 clock_t start1,finish1,start2,finish2; double duration1,duration2; const int maxn=40; int n,v,maxValue=0;//物品件数,背包容量,最大价值 int w[maxn],c[maxn];//每件物品的质量和价值 void dfs(int i...原创 2020-03-09 10:38:23 · 348 阅读 · 0 评论 -
二叉树基操
struct node{ char data; node *lchild; node *rchild; }; node* newnode(char v){ node* Node=new node; Node->data=v; Node->lchild=Node->rchild=NULL; return Node; } void search(node* root...原创 2020-03-05 19:19:09 · 122 阅读 · 0 评论 -
vector简单用例
vector 简单的用例 #include<iostream> #include<bits/stdc++.h> #include<cstdio> #include<algorithm> #include<vector> #include<list> #include<string.h> #include<s...原创 2020-03-02 21:38:16 · 194 阅读 · 0 评论 -
xtu p1199 移动路线
描述 X桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。 小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。小明把这只蚂蚁放在左下角的方格中,蚂蚁从左下角的方格中移动到右上角的方格中,每步移动一个方格。蚂蚁始终在方格矩阵内移动,请计算出不同...原创 2020-02-29 17:27:55 · 179 阅读 · 1 评论 -
素数快判方法
算法笔记上看到的判断素数的方法,数学家真的???????? 时间复杂度根号级 bool isprime(int n){ if(n<=1) return false;//特判 int sqr=(int)sqrt(1.0*n);//根号 for(int i=2;i<=sqr;i++){ if(n%i==0) return false; } return true;//素数 } 如果...原创 2020-02-27 13:56:32 · 147 阅读 · 0 评论 -
大整数四则运算
电脑可以处理很大的数。 但是更大的数字运算由于数据类型占有的有限并不能表示出来,所以需要对很大的数字进行大整数处理,光是听着就感觉令人心潮澎湃呢。 核心思想:数组存数,一个单元存一位 下面是大整数存储,比较的模板: struct bign{ int d[1010]; int len;//记录数有多少位 bign(){ memset(d,0,sizeof(d)); len=0; }...原创 2020-02-26 16:49:08 · 358 阅读 · 0 评论 -
二分法的简单拓展
高中数学也好,初中数学也好,老师都讲过二分法,这类题目多多少少也做过。比如计算根号2的值等等。 计算根号2的值(近似的) 思想还是二分法 //计算根号2的近似值 const double eps=1e-5; double f(double x){ return x*x; } double calSort(){ double left=1,right=2,mid;//区间为[1,2] wh...原创 2020-02-25 13:35:14 · 145 阅读 · 1 评论 -
简单的二分法小结
二分法,顾名思义即可 接下来瞅瞅二分法可以做些什么 a[i] 1 2 3 4 5 6 7 8 9 10 i 0 1 2 3 4 5 6 7 8 9 left mid right 根据这张表,可知mid把数组分为了两段。 通过两个个标志位left和right,可以计算出mid。 具体方法: ...原创 2020-02-25 12:07:18 · 170 阅读 · 0 评论