自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

谢华龙的专栏

关注It技术

  • 博客(14)
  • 资源 (1)
  • 收藏
  • 关注

原创 字符串匹配算法

kmp算法的时间复杂度是O(m+n)//get next valuevoid get_next_val(char *s,int *next) { int len=strlen(s); int j=0,k=-1; next[0]=-1; while(j<len-1) { if(k==-1 || s[j]==s[k]) {

2013-05-14 22:53:32 618

原创 大数的加法和乘

用手工计算的方法即可void mult(char *str1,char *str2,char *str3) { int s1=strlen(str1),s2=strlen(str2); memset(str3,'0',(s1+s2+1)*sizeof(str3[0])); reverse_str(str1); reverse_str(str2);

2013-05-14 22:45:32 618

原创 常见数组面试题

1、求子数组的最大和这是一个典型DP问题,状态转移方程为M(i)=max{M(i-1)+a(i),a(i)}int max_sum(int *A,int n) { int thissum=0,maxsum=0; for(int i=0;i<n;i++) { thissum+=A[i]; if(thissum>maxsum) maxsum=thissum; if(thissu

2013-05-14 22:32:00 718

原创 O(lgn)计算斐波那契数

1、斐波那契数按如下递推式定义f(0)=f(1)=1f(n)=f(n-1)+f(n-2), n>=22.常规的求斐波那契数时间复杂度为O(n),直接用递推式求f[0]=f[1]=0;for(i=2;i<n;i++) f[i]=f[i-1]+f[i-2];或者先求出通项公式,特征值为x1,x2,则f(n)=A*x1^n+B*x2^n3.现在主要讨论O(lgn)

2013-05-13 22:18:29 1097 1

原创 洗牌算法

1、随即函数rand()的使用方法rand()会返回一随机数值,范围在0至RAND_MAX 间。在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。那么每次调用的时候产生的随机数是一样的。srand()用来设置rand()产生随机数时的随机数种子。用time(0)做为其参数#include#in

2013-05-13 16:29:06 549

原创 给定RAND5,写出RAND7

描述:给定能随机生成整数1到5的函数rand5(),写出能随机生成整数1到7的函数rand7()这个题网上有很多各种各样的答案,但是感觉都不太科学。做为一个学统计的ds,用概率论的方法来解决这个问题。先假定给定的函数产生的是均匀分布,即 f(x=i)=1/5  , i=1,2,3,4,5。假设随机变量x=rand5()*(rand5()-1)则x的分布为x   0

2013-05-12 18:27:59 758

原创 随机分配座位以及8皇后问题

1、给定一个数组,输出数组元素的所有排列void generate_permutation(int *arr,int beg,int ed,int len) { if(beg==ed-1) { for(int i=0;i<len;i++) cout<<arr[i]<<" "; cout<<endl; } for(i

2013-05-11 15:01:12 809

转载 The Zen of Python

Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readabilit

2013-05-10 17:03:23 505

原创 常见链表算法

链表节点的数据结构为struct node { int data; struct node* next;}1.创建链表1)前插法void create_list() { int len; head=(node*)malloc(sizeof(node)); head->next=NULL; cout>len; while(le

2013-05-10 17:01:49 717

原创 常见的树结构

1.查询二叉树(binary search tree)性质:所有左子树节点的值 struct node { int key; node* lchild,*rchild;}; node* new_node(void) { node* t=(node*)malloc(sizeof(node)); t->lchild=t->rchild=NUL

2013-05-10 17:01:11 674

原创 并查集

按秩合并的带权并查集,常在寻找公共朋友,构造最小生成树(Kruskal)算法中。#define N 101struct UnionSet { //p,父节点;rank,秩 int p[N],rank[N],sz; void init_set(int n) { sz=n; //设置每个元素父节点为其本身

2013-05-10 17:00:22 499

原创 快排以及查找第K元素

1.快排。快排,合并排序什么的必须熟练掌握啊,这么经典的算法。。。int qsort_aux(int A[],int p,int q) { //选择最后一个元素x做为参照,将小于x和大于x的元素放在x两侧 int i=p-1,j,x=A[q]; for(j=p;j<q;j++) { if(A[p]<=x) swap(A[++i],A[j]

2013-05-10 16:59:35 829

原创 常见算法题

一、维护O(1)时间查找最大元素的栈问题描述:一个栈stack,具有push和pop操作,其时间复杂度皆为O(1)。设计算法max操作,求栈中的最大值,该操作的时间复杂度也要求为O(1)。可以修改栈的存储方式,push,pop的操作,但是要保证O(1)的时间复杂度,空间时间复杂度无要求。 可以创建一个类,类里有两个栈,一个栈S维持正常的push、po

2013-05-10 16:58:33 2131 1

原创 简单的字符串算法

1、标准库函数int strlen(char* s) { if(s==NULL) return 0; int len=0; while(str[++len]!='\0'); return len;} char strcpy(char* str1,const char* str2) { if(str1==str2

2013-05-10 16:57:04 602 1

python入门

python 入门教程

2014-09-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除