![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
tunyalana
这个作者很懒,什么都没留下…
展开
-
滑雪(DFS)
输入:5 51 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9`输出:25代码:#include<bits/stdc++.h>using namespace std;int r,c;int h[105][105];int flag[105][105];int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int dfs(int x,int y){ if..原创 2021-01-29 18:04:39 · 181 阅读 · 0 评论 -
拓扑排序
代码:#include<bits/stdc++.h>using namespace std;int n,m;const int maxn=505;int mpt[maxn][maxn];int lev[maxn];vector<int> v[maxn];priority_queue<int,vector<int>,greater<int> >q;void topo(int s){ for(int i=1;i<=s;+..原创 2021-01-27 21:36:08 · 43 阅读 · 0 评论 -
最短路(spfa算法)
代码:#include<bits/stdc++.h>using namespace std;int n,m;#define inf 0x3f3f3f3fconst int maxn=100+5;vector< pair<int,int> > edges[maxn];int dist[maxn];int vis[maxn];int p[maxn];void init(){ for(int i=0;i<maxn;++i) { dist[..原创 2021-01-27 20:11:34 · 93 阅读 · 0 评论 -
畅通工程---(并查集)
代码:#include<bits/stdc++.h>using namespace std;const int maxn=1000+5;int fa[maxn];int va[105][105];struct node{ int u,v; int weight; }graph[105];bool cmp(node a,node b){ return a.weight<b.weight;}int find(int x){ if(x==fa[x]) ret..原创 2021-01-26 20:58:27 · 140 阅读 · 0 评论 -
三人连线BFS
代码:#include<bits/stdc++.h>using namespace std;const int maxn=100+5;char mpt[maxn][maxn];int vis[maxn][maxn][4];int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//右下左上四个方向 struct node{ int x,y; };#define inf 0x3f3f3f3fint n,m;node p[4];void b..原创 2021-01-25 23:07:14 · 70 阅读 · 0 评论 -
迷宫--BFS
代码:#include<bits/stdc++.h>using namespace std;const int maxn=100+5;char mpt[maxn][maxn];int vis[maxn][maxn];int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};//右下左上四个方向 struct node{ int x,y; int step;};int bfs(int sx,int sy){ memset(vis,0,size..原创 2021-01-25 22:06:34 · 49 阅读 · 0 评论 -
前缀树
代码:#include<bits/stdc++.h>using namespace std;const int maxn=26;//26个小写字母,如果有大写,变为52typedef struct node{ int count; struct node *next[maxn];}Tree;int sum;Tree T;//初始化 void Init(){ for(int i=0;i<maxn;++i) { T.next[i]=NULL; }}//..原创 2021-01-22 22:13:32 · 67 阅读 · 0 评论 -
区间刷墙、区间移树(利用map)
代码:#include<bits/stdc++.h>using namespace std;int main(){ int L,m; while(cin>>L>>m) { map<int,int>pipei; for(int i=0;i<=L;++i) { pipei[i]=1; } while(m--) { int l,r; cin>>l>>r; for(int ..原创 2021-01-22 21:38:46 · 90 阅读 · 0 评论 -
二叉树任意两点间最短路径(利用栈-找公共祖先,不需要建立二叉树)
代码:#include<bits/stdc++.h>using namespace std;int main(){ int T; cin>>T; while(T--) { int n,m; cin>>n>>m; int a[2011]={0}; a[1]=1000;//父节点 for(int i=1;i<=n;++i) { int lchild,rchild; cin>>lchild..原创 2021-01-22 21:02:02 · 208 阅读 · 0 评论 -
先序和中序遍历确定后序遍历
代码:#include<bits/stdc++.h>using namespace std;string s,t;void print_post(string s,string t){ int len=s.size(); char c=s[0]; int i=t.find(c); if(len>0) { print_post(s.substr(1,i),t.substr(0,i)); print_post(s.substr(i+1),t.substr(i+1).原创 2021-01-22 20:21:33 · 167 阅读 · 0 评论 -
二叉树(123456...)算两节点间节点个数
代码:#include<bits/stdc++.h>using namespace std;int m,n,sum;void DFS(int m){ if(m>n) return; sum++; DFS(2*m); DFS(2*m+1);}int main(){ while(cin>>m>>n) { if(m==0&&n==0) break; sum=0; DFS(m); cout<<s..原创 2021-01-22 20:10:39 · 346 阅读 · 0 评论 -
求二叉树(123456..)公共父节点
4和6公共父节点为1要求多组输入代码:#include<bits/stdc++.h>using namespace std;int main(){ int x,y; while(cin>>x>>y) { while(x!=y) { if(x>y) x/=2; if(x<y) y/=2; } cout<<x<<endl; } return 0;}...原创 2021-01-22 19:54:54 · 934 阅读 · 0 评论 -
二叉排序树(输出父节点)
代码:#include<bits/stdc++.h>using namespace std;typedef struct node{ int data; struct node *lchild,*rchild;}*BiTree; void createTree(BiTree &T,int x,int parent){ if(T==NULL) { T = new node; T->data=x; T->..原创 2021-01-22 19:29:22 · 133 阅读 · 0 评论 -
括号匹配(利用map确定优先级)
代码:#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; string s; map<char,int>pipei; pipei['{']=4;pipei['[']=3;pipei['(']=2;pipei['<']=1; for(int j=1;j<=n;++j) { cin>>s; stack<char>st; ..原创 2021-01-21 20:50:56 · 294 阅读 · 0 评论 -
二叉树遍历、计算叶节点、计算深度(递归)
#include<bits/stdc++.h>using namespace std;typedef struct node{ char data; struct node *lchild,*rchild;}*BiTree;int len=0;string s;//字符串方式输入先序建立二叉树 void CreateTree(BiTree &T){ if(len==s.size()) return; char c=s[len++]; if(c=='#')...原创 2021-01-22 10:33:15 · 209 阅读 · 0 评论