- 博客(11)
- 收藏
- 关注
转载 并查集(Union-Find)算法介绍
原文:http://blog.csdn.net/dm_vincent/article/details/7655764本文主要介绍解决动态连通性一类问题的一种算法,使用到了一种叫做并查集的数据结构,称为Union-Find。更多的信息可以参考Algorithms 一书的Section 1.5,实际上本文也就是基于它的一篇读后感吧。原文中更多的是给出一些结论,我尝试给出一些思路
2013-09-09 15:01:56
653
转载 malloc函数的一种简单的原理性实现
malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针malloc()工作机制 malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的
2013-09-03 19:49:55
565
转载 聚簇索引和非聚簇索引
一、聚簇索引(clustered indexes)的使用 聚簇索引是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。由于聚簇索引的索引页面指针指向数据页面,所以使用聚簇索引查找数据几 乎总是比使用非聚簇索引快。每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。建立聚簇索引 的思想是:1、大多数表都应该有聚簇
2013-09-03 15:06:11
784
原创 华为心得
终于尘埃落定,当南京华为BSS的boss许诺offer的时候,这真是一个甜蜜的时刻。从参加实习招聘,到现在的提前招聘,前后也近三个月的时间的。前后的机试、面试,还是可以感觉到华为的变化的。众所周知的华为今年涨薪的,研究生基本工资9k,优秀的可以谈到12k,对于种种原因很想留在南京的我而言,这个工资我感觉还是挺有一定的竞争力的。好了,话不多说,进入正题。 实习的机试、面试应该还是挺容易的。
2013-08-15 10:20:15
2179
4
原创 带有通配符的两个字符串匹配问题
比如constchar*s1="abcdfgfgdfgbhcdf";const char*s2="**fgd**f*bh*";就是匹配的,并且输出fgdfgbh。bool pipei(const char*s1,const char*s2){ const char *beg=NULL;const char *t1=NULL,*t2=NULL; while(*s2) { if(*s2
2013-08-15 09:31:44
1286
原创 乱序数组找出前面的都比他小后面的都比他大的数
int f(int*a,int*b,int n){ if(!a||!b||n<3) return -1; int*temp=new int[n](); int max=a[0],count=0; for (int i=1;i<n-1;i++) if(a[i]>max) { temp[i]++; max=a[i]; } int min=a[n-1]; for
2013-08-13 16:41:16
3516
原创 汉罗塔
汉罗塔经典移动次数解法和第m次第s个盘子从哪个柱子移动到哪个柱子的公式解法void han(int n, int m){ int s=1,t=2; for (int i=1;i<=n;i++) { if(m%t==s) break; s=t; t*=2; } cout<<s<<'\t'; int k=m/t; if(n%2==k%2) { if((k+1)%3=
2013-08-13 16:02:35
1079
8
原创 连续最大积
void f(){ int t; cin>>t; vector v; for (int i=0;i<t;i++) { int n; cin>>n; int*a=new int[n]; for (int j=0;j<n;j++) { cin>>a[j]; } int temp=0,current=0,max=0; for (int i=0;i<n;i
2013-08-10 21:05:17
629
原创 输入一个数,把它作为一个串,判断其中是否包含长度>=2的相同子串,如 果包含,返回1,不包含,返回0
bool f(string s){ map m; map::iterator ite; int len=s.size(); for (int i=0;i<len-1;i++) m[s.substr(i,2)]++; for(ite=m.begin();ite!=m.end();ite++) if(ite->second!=1) return true; return fals
2013-08-09 23:01:25
1086
1
原创 识别字符串中的整数并转换为数字形式
int f(string s,int*a){ int count=0; int n=0; bool isnumber=false; for(int i=0;i<s.size();i++) { if(isdigit(s[i])) { n=n*10+s[i]-'0'; isnumber=true; if(i==s.size()-1) { a[coun
2013-08-09 22:47:40
1205
原创 星期几 知道今天(2013年8月9号星期五)
bool runnian(int y){return (y%4==0&&y%100!=0)||y%400==0;}int fm(int y,int m,int d){switch (m){case 1:if(!runnian(y)) return -(9+31+30+31+30+31+28+31-d);else return -(9+31+30+31+3
2013-08-09 21:52:11
959
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人