- 博客(46)
- 收藏
- 关注
原创 poj1611并查集
#includeint p[30006],q[30006];int find(int x){ if(p[x] == x) return x; return p[x] = find(p[x]);}void Union(int x, int y){ int fx = find(x); int fy = find(y); if(f
2015-10-31 14:43:22
372
原创 并查集2524
#includeint p[50006];int find(int x){ if(p[x] == x) return x; return p[x] = find(p[x]);}void Union(int x, int y){ p[y] = x; //ans--;}int main(){ int n,m,an
2015-10-31 14:42:23
294
原创 杭电5499
#include#includetypedef struct person{ char name[21]; char sex[7]; int round1; int round2; float final_mark;}Person;void sort(Person end[], int n){ fo
2015-10-31 14:40:19
281
原创 杭电5494
#include#includeint cmp(const void *a, const void *b){ return *(int *)a - *(int *)b;}int main(){ int t,a[1006],b[1006]; scanf("%d",&t); while(t--) { int n
2015-10-31 14:39:27
297
原创 杭电5273
#include#include int main(){ int n,q,l,r; int a[1006]; int dp[1006][1006]; scanf("%d%d",&n,&q); for(int i = 1; i { scanf("%d",&a[i]); } mems
2015-10-31 14:38:33
305
原创 杭电5500排书
#includeint main(){ int t,n,j,ans,a[26]; scanf("%d",&t); for(int i = 0; i { scanf("%d",&n); for(j = 0; j scanf("%d",&a[j]); ans = n;
2015-10-31 14:35:54
292
原创 poj1664递归放苹果
#includeint put_apple(int m, int n){ if(m if(m == 0 || n == 1) return 1; return put_apple(m - n, n) + put_apple(m, n - 1);}int main(){ int n,m,t; scanf("%d",&t);
2015-10-31 14:34:26
285
原创 第二次练习
A.Watermelon time limit per test 1 second memory limit per test 64 megabytes input standard input output standard output One hot summer day Pete and his friend Billy decided to buy a watermelon. The
2015-08-12 19:34:17
774
原创 数组模拟队列 广搜
#include //数组模拟队列//char c[5][5]={s,*,#,#,#,#,*,#,#,#,*,*,*,*,*,*,#,#,#,e,*,*,*,*,*};char c[1006][1006];struct node{ int step; int x,y;}s,temp; //结构体变量int vis[10006][10006]; //标
2015-08-12 19:25:40
421
原创 poj3278广搜
#include struct node{ int step; int x;}s,temp; struct node que[100006];int n,k;int vis[100006];int bfs(int step,int x){ int f=0,r=0; s.step=step; s.x=x;
2015-08-12 19:24:26
257
原创 深搜和广搜
深度优先搜索遍历算法深度优先搜索的过程深度优先搜索所遵循的搜索策略是尽可能“深”地搜索图。在深度优先搜索中,对于最新发现的节点,如果它还有以此为起点而未搜索的边,就沿此边继续搜索下去。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v有那条边的始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到
2015-08-12 19:16:00
448
原创 贪心凑钱
#include //凑钱贪心。int main(){ int n,ans=0; int a[606],b[7]={1,5,10,20,50,100,500}; scanf("%d",&n); for(int i=0;i { scanf("%d",&a[b[i]]); } for(int i=6;i>=
2015-08-12 19:13:43
443
原创 贪心及区间使做的工作最多
#include #includestruct node{ int s; int t;};struct node p[100000];int cmp(const void *a,const void *b) //交换函数{ struct node *aa=(node *)a; struct node *bb=(node *)b;
2015-08-12 19:12:48
211
原创 poj3617贪心
Best Cow LineTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 13682 Accepted: 3924DescriptionFJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annu
2015-08-12 19:11:29
266
原创 poj3069贪心
Saruman's ArmyTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5560 Accepted: 2847DescriptionSaruman the White must lead his army along a straight path f
2015-08-12 19:09:58
227
原创 poj2393贪心
Yogurt factoryTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 7798 Accepted: 3970DescriptionThe cows have purchased a yogurt factory that makes world-famo
2015-08-12 19:08:29
322
原创 poj1328贪心
#include #include#includestruct node{ int x0,x1;};struct node p[1006];int cmp(const void *aa,const void *bb){ if ((*(int*)aa)>(*(int*)bb)) return(1); e
2015-08-12 19:05:31
278
原创 全排列
#include void premutation(int pos,int n);char c[100];char used[200];char pre[100];int main(){ int n; scanf("%d",&n); getchar(); gets(c); premutation(0,n); ret
2015-08-06 21:27:19
330
原创 codevs1215走迷宫
#includeint vis[17][17]={0};char c[17][17];int n,m; int dfs(int x,int y){ if(x==n-1 && y==n-1) return 1; if((c[x][y+1]!='#') && (y+1 { vis[x][y]=1;
2015-08-06 21:24:26
426
原创 codevs1008深搜
#include#includeint n,k,a[22],count=0,sum=0;int is_prime(int x){ for(int i=2;i*i if(x%i==0) return 0; return 1;}void dfs(int pos,int sum,int m) //pos表示个数{ if(pos==k) { if(
2015-08-06 21:23:06
307
原创 深搜求迷宫最短路径
#include //0表示可以走 1表示墙int vis[6][6]={0};int a[6][6]; int num=10000000;int min(int x,int y){ if(x return y;}void dfs(int x,int y,int step){ if(x==4 && y==4)
2015-08-06 21:21:35
991
原创 深搜迷宫
#includeint vis[22][22]={0};//char c[5][5]={{'*','*','*','*','#'},{'*','*','#','*','#'},{'#','*','#','*','#'},{'#','*','*','*','*'},{'*','*','#','*','#'}};//char c[5][5]={{'*','#','*','*','#'}
2015-08-06 21:20:44
280
原创 深搜从n个数中找和为k的数
#includeint find(int n,int k,int a[],int sum,int pos); int a[1002];int main(){int n,k,sum=0;scanf("%d%d",&n,&k);for(int i=0;i{ scanf("%d",&a[i]);} if(find(n,k,a,sum,0)) /
2015-08-06 21:19:57
1853
原创 poj2386水洼dfs
#include char a[102][102]; int d[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1}; //d数组表示方位int n,m;void dfs(int x,int y){ if(a[x][y]=='.' || x=n || y=m) return ; for(int i=0;i
2015-08-06 21:17:17
893
原创 扩展欧几里德 POJ1061
#includetypedef long long ll; //重新定义long longll x,y;ll gcd(ll a,ll b) //找ab的最大公约数{if(b==0) return a;else return gcd(b,a%b);}void extend_gcd(ll a,ll b) //函数求解ax+by=d的一组解{if(b==0)
2015-07-31 19:44:57
620
原创 素数(降低时间复杂度)
#include#includeint main(){int n,i,j,a[1000];scanf("%d",&n);a[0]=1,a[1]=1;int m=sqrt(n);for(i=2;i{ for(j=i*2;j a[j]=1;}for(i=0;i if(a[i]!=1) printf("%d\n",i);return 0
2015-07-29 21:09:49
372
原创 快速冥
#includeint main(){long int n,m,a,sum=1;scanf("%ld%ld",&m,&n);while(m!=0){if(m & 1) sum*=n;n*=n;m/=2;}printf("%ld\n",sum);return 0;}
2015-07-29 21:08:47
826
原创 二叉树的先序、中序、后序遍历
#includeint heap[20][2];void before_traverse(int a){ if(!a) return; printf("%d ",a); before_traverse(heap[a][1]); before_traverse(heap[a][2]);}void middle_traverse(int a){ if(
2015-07-29 21:07:45
338
原创 辗转相除法
#include int gcd(int m,int n){ while(m%n!=0) //循环 { int temp=n; n=m%n; m=temp; } return n;}int main(){ int m,n; scanf("%d%d",&m,&n); printf("%d\n",gcd(m,n));
2015-07-29 21:07:02
255
原创 二叉树的最大深度和最大宽度
#includeint main(){ int n,f[16] = {0},h = 1; scanf("%d",&n); f[1]=1; int a,b; for(int i = 1;i { scanf("%d%d",&a,&b); if(a!=0)f[a]=f[i]
2015-07-29 21:02:14
574
原创 搜索二叉树的相关操作
#include#includetypedef struct Node{ int val; struct Node *lch; struct Node *rch;}node,*pnode;pnode insert(pnode p,int x) //插入函数(建树){ if(p == NULL) { pnode q=(pnode)malloc
2015-07-29 21:00:39
249
原创 哈夫曼树。。。贪心(小的)
#includeint heap[100000],size=0;void push(int x){ int i=size++; while(i>0) { int j=(i-1)/2; if(heap[j] heap[i]=heap[j]; i=j; } heap[i]=x; }int pop(){ int res=heap[0
2015-07-29 20:59:26
217
原创 二叉树的相关操作
#includeint size=0; //全局变量int heap[100];void push(int x) //插入函数从下往上找{ int i=size++; //size从0开始,i从0开始,之后size自加 while(i>0) //当i等于0时,直接将x赋给heap[i] { int j=(i-1)/2; //找i的父节点j if
2015-07-29 20:55:29
248
原创 循环队列相关知识
#include#includetypedef struct queue{ int *pbase; int front; int rear;}Q;void creat_queue(Q *pq) //初始化{ pq->pbase = (int *)malloc(sizeof(int) * 10); pq->front = 0; pq->rear
2015-07-22 21:29:54
273
原创 算法
衡量算法的标准1、时间复杂度:程序最坏情况下要执行的次数,而非时间(因为对于不同的机器,时间往往不同)****2、空间复杂度:算法执行过程中最坏情况下要占用的内存空间。**3、难易程度4、健壮性时间复杂度:取最高次幂,去掉系数
2015-07-22 20:09:46
213
原创 快排相关知识
快速排序要排序的区间是[begin, end]0.begin 1,val = arr[begin]2.l = begin, r = end 2.1保证l 2.2从r往前找到一个小于val的值,r是是指向这个值 2.3从l往后找到一个大于等于val的值,l是指向这个值的 2.4交换l和r的值。 2.5如果l==r,arr[l] = val; 2.6否则回到2.
2015-07-22 20:03:58
309
原创 归并排序及求逆序对
#includeint cont=0;void sort(int a[],int temp[],int start,int end);void marge(int a[],int temp[],int start,int middle,int end);int main(){ int a[1000],temp[1000],i,n; printf("请输入数组个数:");
2015-07-22 19:59:50
237
原创 队列相关知识
#include#includetypedef struct node{ int data; struct node *pnext;}Node, *pnode;typedef struct queue{ pnode front; pnode rear;}QUEUE;QUEUE q;void creat_queue() //创建队列{
2015-07-22 19:55:33
211
原创 分治思想 归并排序
#includevoid sort(int a[],int start,int end); //声明void marge(int a[],int temp[],int start,int middle,int end);int main(){ int a[1000],temp[1000],i,n; printf("请输入数组个数:"); scanf("%d",&n);
2015-07-20 21:31:29
209
原创 栈总结
#include#include#define stack_size 30struct stack{ int size; int *base; int *top;};struct stack s;void creat_stack() //创建{ s.base = (int *)malloc((stack_size)*sizeof(int));
2015-07-19 17:24:47
235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人