算法
文章平均质量分 62
bai071006201
这个作者很懒,什么都没留下…
展开
-
不排序找出一个数组中的第二大的数
//找出一个整数数组中第二大的数,不需要排序#includevoid main(){int a[100],i,n; printf("please input the num:\n");scanf("%d",&n);printf("please input:\n");for(i=1;i{scanf("%d",&a[i]);}int max,sec原创 2012-04-13 20:57:17 · 2491 阅读 · 0 评论 -
数组实现队列
//数组实现队列#include#define stack_size 20typedef struct{ int a[stack_size]; int top; int botton;}stack;void initstack(stack* sequence){ sequence->botton=1; sequence->top=1;}int isf原创 2012-04-01 20:40:06 · 213 阅读 · 0 评论 -
堆排序
//堆排序#includeusing namespace std;int N;int a[20];int parent(int i)//返回父节点位置{ return i/2;}int left(int i)//返回左子节点位置{ return 2*i;}int right(int i)//返回右子节点位置{ return 2*i+1;}void maxheap(原创 2012-07-22 19:48:12 · 183 阅读 · 0 评论 -
散列表的插入和检索(c语言实现)
#include#includeint m=20;typedef struct node{ int data; struct node *next;}node;typedef struct nodelist{ int count; node * start;}nodelist;int hash(int i){ int pos=i%m;原创 2012-04-03 16:01:50 · 626 阅读 · 0 评论 -
c语言实现链表
//typedef:给一个类型名起一个新名字:typedef char datatype;//结构体的名字应该与struct一起使用,这样才能表示一个结构类型:struct node#include#include #define null NULLtypedef struct node{ int i; struct node * next;}linklis原创 2012-04-03 12:30:18 · 258 阅读 · 0 评论 -
用动态规划找到两个字符串的最长公共子序列
//用动态规划找到两个字符串的最长公共子序列,程序好像还有点问题#include#includeint printlcs(char b[10][10],char x[],int i,int j){if((i==0)||(j==0))return 0;if(b[i][j]=='1'){printf("%c",x[i]);i--;j--;printlcs(b,x,i,j);}原创 2012-04-17 21:28:12 · 641 阅读 · 0 评论 -
图的广度搜索完整实现(邻接表,队列,BFS)
//构造邻接表,队列,广度优先搜索#include#include#define null NULLusing namespace std;typedef struct nd{ int key; struct nd * next;}node;typedef struct ndl{ int count; node * first;}nodelist;typedef st原创 2013-03-12 15:41:03 · 560 阅读 · 0 评论 -
图的深度搜索完整实现(邻接表,DFS)
//构造邻接表,深度优先搜索#include#include#define null NULLusing namespace std;typedef struct nd{ int key; struct nd * next;}node;typedef struct ndl{ int count; node * first;}nodelist;int n=6;node原创 2013-03-12 16:13:01 · 571 阅读 · 0 评论 -
并差集
DescriptionDo you know a software called "WeiXin", a kind of chatting tool? There is an application called "Shaking for a while". Once you shake your cellphone, you can find those who shake their原创 2013-03-20 14:07:05 · 485 阅读 · 0 评论 -
flody
参考文献#includeusing namespace std;int MAX_DIS=999;int graph[50][50];int dis[50][50];int path[50][50];int n;void flody(){ int i,j,k; for(k=1;k<=n;k++) { for(int i=1;i<=n;i++) { for(原创 2013-03-21 14:45:53 · 641 阅读 · 0 评论 -
Help Captain Chen Ⅰ
DescriptionRecently, more and more students pay attention to a funny game called ACM, including Captain Chen. He finds that to compete in the Finals he must get a good rank in the Regionals原创 2013-03-22 09:57:26 · 579 阅读 · 0 评论 -
c语言实现顺序栈
//c++实现顺序栈#includeusing namespace std;#define maxsize 20typedef struct stack{ int top; int a[maxsize];}stack;void initstack(stack* s){ s->top=-1;}bool isempty(stack* s){ if(s->top==-1)原创 2012-03-29 20:06:57 · 217 阅读 · 0 评论 -
复杂度为(3/2n)的取出最大值和最小值的算法
#includevoid main(){ int a[100],i,j,n,min,max; printf("please input the number:\n"); scanf("%d",&n); printf("please input:\n"); for(i=1;i<=n;i++) { scanf("%d",&a[i]); }原创 2012-03-29 17:13:36 · 880 阅读 · 0 评论 -
用动态规划解决两个装配站最优化问题
//用动态规划解决两个装配站最优化问题/*该问题是找出经过两个装配线之后花费的时间最小的问题,可参考算法导论第十五章。*/#includevoid main(){int n,e1,e2,a[3][10],t[3][10],x1,x2,i,j,f[3][10],min;printf("输入站的个数:\n");scanf("%d",&n);printf("输入低原创 2012-04-14 20:51:22 · 505 阅读 · 0 评论 -
贪心算法解决活动选择问题
//贪心算法解决活动选择问题,假设输入的活动结束时间是递增的。#includevoid main(){int s[20],f[20],i,j;//分别是开始时间数组和结束时间数组。int m;scanf("%d",&m);//输入共有多少活动。for(i=1;i{scanf("%d",&s[i]);}//输入各个活动开始时间。for(i=1;i{原创 2012-04-19 21:47:43 · 818 阅读 · 0 评论 -
快速查找数组中第几小的元素
#includeint patition(int a[],int p,int r){ int x=a[r]; int i=p-1; int j; for(j=p;j<=r-1;j++) { if(a[j]<=x) { i++; int temp=a[j]; a[j]=a[i]; a[i]=temp; } } int tem; tem=a[i+原创 2012-06-02 21:08:42 · 481 阅读 · 0 评论 -
快排2
#includeint patition(int a[],int p,int r){ int i=p-1; int x=a[r]; for(int j=p;j<=r-1;j++) { if(a[j]<=x) { i++; int temp; temp=a[j]; a[j]=a[i]; a[i]=temp; } } int tem;原创 2012-06-02 16:53:07 · 406 阅读 · 0 评论 -
二叉查找树的创建,插入,搜索,查询后继
#include#include#define null NULLtypedef struct t{ int key; struct t *left; struct t *right; struct t *parent;}tree;tree* insert(tree *t,int i){ tree *p=null; tree *x=t; if(t==null) {原创 2012-06-04 18:31:58 · 252 阅读 · 0 评论 -
合并排序
#includeusing namespace std;void merge(int a[],int p,int q,int r){ int m=q-p+1; int n=r-q; int b[100],c[100],i,j,k; for(i=1;i<=m;i++) { b[i]=a[p+i-1]; } b[m+1]=100; for(i=1;i<=n;i++) {原创 2012-03-25 18:23:23 · 262 阅读 · 0 评论 -
插入排序
//插入排序#includeusing namespace std;void main(){ int a[100],i,j,n; cin>>n; for(i=1;i<=n;i++) { cin>>a[i]; } for(i=2;i<=n;i++) { if(a[i]<a[i-1]) { int temp=a[i]; for(j=i-1;j>=1 &&原创 2012-03-25 18:25:05 · 154 阅读 · 0 评论 -
冒泡排序算法
//冒泡排序#includeusing namespace std;void main(){ int a[100],i,j,n; cin>>n; for(i=1;i<=n;i++) { cin>>a[i]; } for(i=1;i<=n;i++) { for(j=i+1;j<=n;j++) { if(a[j]<a[i]) { int temp=原创 2012-03-25 18:25:14 · 169 阅读 · 0 评论 -
朴素字符串匹配
//朴素字符串匹配#include#includeusing namespace std;void stringmatch(string t,string s){ int m=t.length(); int n=s.length(); int i,j; for(i=0;i<=m-n;i++) { for(j=0;j<n;j++) { if(t[j+i]!=s[j]原创 2012-06-19 20:37:58 · 212 阅读 · 0 评论 -
快速排序
//快速排序#includeusing namespace std;int patition(int a[],int p,int r){ int x=a[r],j; int i=p-1;//i始终指向大于x的元素的前一个元素 for(j=p;j<=r-1;j++) { if(a[j]<x) { i++; int temp=a[j]; a[j]=a[i];原创 2012-03-28 21:33:29 · 183 阅读 · 0 评论 -
字符串反转
#include#include#includeusing namespace std;int convert(string s){ char c[10][20]; int i=0; int j=0; int k=0; while(s[i]!='\0') { if(s[i]!=' ') { c[j][k]=s[i]; k++; i++; }原创 2013-04-22 15:40:31 · 431 阅读 · 0 评论