![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 55
hwj19931213
这个作者很懒,什么都没留下…
展开
-
栈的应用(括号匹配、后缀表式计算、中缀转后缀)
#ifndef _Stack_hstruct Node;typedef struct Node *PtrToNode;typedef PtrToNode Stack;typedef float ElementType;int IsEmpty(Stack s);Stack CreateStack(void);void DisposeStack(Stack s);void Make原创 2015-03-26 15:38:04 · 399 阅读 · 0 评论 -
B树实现
#include#include#define M 3//2-3b树的实现 3阶b树 typedef struct btree{ int count;//结点中元素个数 即关键字个数 int element[M-1]; struct btree* next[M]; bool isLeaf;//增加一个是否是叶子结点判断 }*Btree; //打印void print(Bt原创 2015-04-07 07:42:19 · 417 阅读 · 0 评论 -
avl树实现
#include#include//平衡树的实现typedef struct AvlNode{ int element; struct AvlNode *left; struct AvlNode *right; int height;}*AvlTree;int Height(AvlTree T){ if(T==NULL){ return -1; }else{原创 2015-04-05 14:25:25 · 310 阅读 · 0 评论 -
伸展树实现
#include#include//伸展树的实现 typedef struct splayNode{ int element; struct splayNode* left; struct splayNode* right;}*SplayTree;SplayTree SingleTotateWithLeft(SplayTree T);SplayTree SingleTotateW原创 2015-04-05 21:14:30 · 321 阅读 · 0 评论 -
约瑟夫环
#include#includetypedef struct node{ int rank; struct node* next;}*Node;//遍历void print(Node head){ Node temp=head->next; while(temp){ printf("%d ",temp->rank); temp=temp->next; }} //原创 2015-04-01 18:07:28 · 276 阅读 · 0 评论 -
单链表反转
#include#includeint count=0;typedef struct node{ int value; struct node *next;}*Node;//尾插void insert(int value,Node head){ Node p=head; while(p->next){ p=p->next; } Node temp=(Node)mallo原创 2015-04-02 14:32:41 · 306 阅读 · 0 评论 -
最小正子序列和
#include//求最小正子序列和//最小正子序列和:1、连续子序列,2、序列和为正且最小 //思路:求出开始的一组子序列:{-2},{-2,11},//{-2,11,-4}, {-2,11,-4,13},{-2,11,-4,13,-5},{-2,11,-4,13,-5,-2} //剩下的子序列必然可以通过上面的这一组子序列相减获得//所以要获得最小正子序列各,必然将上面的序列和排序原创 2015-03-22 12:29:35 · 2378 阅读 · 2 评论 -
最大子序列乘积
#include//最大子序列乘积 int maxNum(int a,int b,int c){ int max=a;if(b>max){ max=b; }if(c>max){ max=c; } return max; } int minNum(int a,int b,int c){ int min=a; if(min>原创 2015-03-22 16:20:19 · 444 阅读 · 0 评论 -
最大子序列和问题
#include#include//求最大子序列和问题 //解法四 无法获取位置void getMax5(int a[],int len){ int max=0,result=0; for(int i=0;i<len;i++){ result+=a[i]; if(max<result){ max=result; }else if(result<0){ re原创 2015-03-21 17:10:53 · 344 阅读 · 0 评论 -
循环打开头文件
#include #include #include #include#include#define MAXLINE 1024void process_line(const char *filename);int main(int argc,char **argv){ process_line("string.h");}void process_line(con转载 2015-03-21 08:44:30 · 426 阅读 · 0 评论 -
io打印整数实数
#include#include//打印任意整数 void printDigit(int count){ if(count>0){ if(count>10){ printDigit(count/10); } //else { printf("%d",count%10); } }else{ count=0-count; printf("-");原创 2015-03-21 07:34:23 · 549 阅读 · 0 评论 -
选择问题
#include#include//选择问题解法 //打印数组void print(int *a,int len){ for(int i=0;i<len;i++){ printf("%d ",*(a+i)); }} //交换两个数void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;} //冒泡void原创 2015-03-20 22:41:15 · 448 阅读 · 0 评论 -
01背包问题中常数优化(背包九讲)
for i=1..N for v=V..0可以改成for i=1..n bound=max{V-sum{c[i..n]},c[i]}for v=V..bound倒推 f(v) 需求出f(v-w(n)) 往后推 f(v-w(n)) 需求出f(v-w(n)-w(n-1)) 继续往后推 则推到第j步 为v-sum(w[j-n]原创 2015-05-08 23:12:27 · 2491 阅读 · 3 评论