数据结构
hawkeye丶
这个作者很懒,什么都没留下…
展开
-
汉诺塔
#include#includeint count;int main(){ int n; while(~scanf("%d",&n)) { count =0; hanoi(n,'a','b','c'); } return 0;}void move(int n,char x,char z){ printf(原创 2016-05-04 08:51:01 · 225 阅读 · 0 评论 -
最小生成树kruskal算法
#include#include#includeusing namespace std;int n,m,sum,tol;int fth[10000];struct node{ int f; int t; int v;} edge[100];int cmp(node a,node b){ return a.v<b.v;}int find(in原创 2016-08-18 14:04:02 · 183 阅读 · 0 评论 -
邻接表
#include #include#include#includeusing namespace std;const int maxn=100;int n,m,tol,hed[maxn];struct node{ int t; int v; int next;} edge[2*maxn];void addedge(int f,int t,int v){原创 2016-08-18 14:05:05 · 277 阅读 · 0 评论 -
最小生成树prim算法
#include#include#includeusing namespace std;const int maxn=1e9;int n,m,sum,matrix[100][100],vis[100],dis[100];int prim(){ sum=0; for(int i=1; i<=n; i++) { dis[i]=matrix[1][i原创 2016-08-18 14:03:07 · 175 阅读 · 0 评论 -
网络流Dinic算法
#include#include#include#include#includeusing namespace std;int maxn=1e9;int n,m,s,t,e,cost[1000],head[1000],pnt[1000*1000],next[1000],level[1000];queueq;void add(int u,int v,int w){ pnt原创 2016-08-29 14:18:35 · 338 阅读 · 0 评论 -
Floyd算法
#include#include#include#includeusing namespace std;const int maxn=1e9;int mp[100][100];int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { for(int i=1; i<=n; i++) {原创 2016-08-22 11:07:14 · 229 阅读 · 0 评论 -
dijkstra算法
#include#include#include#includeusing namespace std;const int maxn=1e9;int mp[100][100],dis[100],vis[100],n,m;void dijkstra(int s){ for(int i=1; i<=n; i++) { vis[i]=0;原创 2016-08-22 11:08:05 · 345 阅读 · 0 评论 -
bellman-ford算法
#include#include#include#includeusing namespace std;const int maxn=1e9;int n,m,dis[1000];struct node{ int f; int t; int v;} edge[1000];int bellmanford(){ for(int i=1; i<=n;原创 2016-08-22 11:46:16 · 280 阅读 · 0 评论 -
树状数组
#include #include#include#includeusing namespace std;const int maxn=1e5+10;int n,c[maxn];int lowbit(int x){ return x&(-x);}void insert1(int i,int x){ while(i<=n) { c[i]+原创 2016-08-11 10:29:04 · 165 阅读 · 0 评论 -
BFS
#include#include#include#include#includeusing namespace std;char maze[505][505];int vis[505][505];int dir[4][2]= {{1,0},{0,-1},{-1,0},{0,1}},sx,ey,m,n,t;struct node{ int x; int y;原创 2016-09-13 19:28:10 · 186 阅读 · 0 评论 -
最小费用最大流
#include#include#include#include#includeusing namespace std;const int maxn=1e9;int src,sink,n,m,e,head[1005],pnt[50000],next[50000],cost[50000],cnt[1005],pre[1005],dis[1005],flow[50000];bool v原创 2016-09-02 20:03:30 · 320 阅读 · 0 评论 -
SPFA算法
#include #include#include#include#includeusing namespace std;const int maxn=1e9;int n,m,tol,hed[10000],dis[10000],vis[10000],cnt[10000];struct node{ int f; int t; int v; int n原创 2016-08-25 14:15:55 · 209 阅读 · 0 评论 -
DFS模板Oil Deposits
#include#include#includeusing namespace std;char map[101][101];int n, m, cnt;void dfs(int i, int j){if(map[i][j]=='@' && (i=0) && (j=0)){ map[i][j] = '#'; dfs(i-1, j-1)原创 2016-05-03 21:48:32 · 213 阅读 · 0 评论 -
线段树区间和最大值
#include#include#include#include#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1using namespace std;const int maxn = 1e5 + 100;int sto[maxn << 2];int cover[maxn << 2];vo原创 2016-08-15 18:54:56 · 406 阅读 · 0 评论 -
二叉树的建立
#include#includetypedef struct tree{char data; struct tree *leftchild; struct tree *rightchild;}bt,*btree;btree creat(){btree T; char ch; scanf("%c",&ch); if(ch=='#') {T=NULL;}原创 2016-05-04 08:36:04 · 235 阅读 · 0 评论 -
N皇后种数
#include#include#includeint c[20], n, cnt=0;void dfs(int r){ int i,j,ok; if(r == n) { ++cnt; return; } for(i=0; i { c[r] = i;原创 2016-05-03 22:26:01 · 286 阅读 · 0 评论 -
字典序全排列
#include#includeint n;int cnt;int vis[100];int num[100];void dfs(int cur){ if(cur==n) { int i; for(i=0; i printf("%d%c",num[i],i==cur-1?'\n':' ')原创 2016-05-03 21:15:04 · 240 阅读 · 0 评论 -
线性表
#include#include#include#include#define Error -10000struct node{ int *elem; int len;};void InitList(struct node *l){ l->elem=(int *)malloc(sizeof(int)*100); l->le原创 2016-05-03 21:12:35 · 189 阅读 · 0 评论 -
链表
#include#include#include#define Error -10000struct LNode{ int data; struct LNode *next;};struct LNode* InitList(){ struct LNode *phead; phead=(struct LNode *)malloc原创 2016-05-03 21:11:22 · 284 阅读 · 0 评论 -
前缀和后缀和
#include#include#include#includeusing namespace std;const int maxn=1e5+10;int n,a[maxn],pre[maxn],nex[maxn];int main(){ while(~scanf("%d",&n)) { for(int i=1; i<=n; i++)原创 2016-07-22 16:31:54 · 1081 阅读 · 1 评论 -
LCS模板
#include #include#include#include#includeusing namespace std;const int maxn=1e3+10;int n,m,dp[maxn][maxn];char a[maxn],b[maxn];int main(){ while(~scanf("%s%s",a,b)) { n=strle原创 2016-07-19 20:39:49 · 873 阅读 · 0 评论 -
KMP
#include#include#include#includeusing namespace std;const int maxn=10010;char str[maxn],str1[maxn];int next[maxn];int kmp(int len,int len1);void next1(int len){ int i=-1; int j=0;原创 2016-07-19 20:40:49 · 280 阅读 · 0 评论 -
C语言实现栈
#include#includeint Stack[1000],top;void push(int n)//入栈{ Stack[++top]=n;}int popstack() //出栈{ return Stack[top--];}int main(){ top=-1; int n,i; while(scanf("%d",&n)!=E原创 2016-07-20 15:15:55 · 216 阅读 · 0 评论 -
C语言实现队列
#include#includeint queue[10000],l,r;void push(int x)//入队列{queue[r++]=x;}int pop(int x)//出队列{return queue[l++];}int main(){l=0;r=0;int m,n;while(scanf("%d",&n)!=EOF){ while(n--)原创 2016-07-20 15:16:51 · 300 阅读 · 0 评论 -
线段树点和
#include#include#include#include#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1using namespace std;const int maxn=1e5+10;int sto[maxn<<2];void pushup(int rt){ sto[rt]=sto[rt<<1]+sto原创 2016-08-15 15:48:46 · 198 阅读 · 0 评论 -
堆排序
#include #includevoid findmax(int *a,int size){ int i; for(i=size-1; i>0; i--) { int parent=i/2; int child=i; if(i<size-1&&a[i]<a[i+1]) { chi原创 2017-01-10 22:08:27 · 211 阅读 · 0 评论