c++
文章平均质量分 70
wodewe
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 虚函数表解析
前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板转载 2011-09-12 22:33:02 · 2477 阅读 · 0 评论 -
C++ 类的静态成员详细讲解
在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和转载 2012-05-15 15:38:39 · 1681 阅读 · 0 评论 -
百度笔试题
给定一个数字编码N,大多数情况下可以找到一个数字编码M,其位数与N相同,各位数字之和与N的各位数字之和相同。并且M是大于N的数值中最小的一个,也可能M不存在。如:N=134则M=143.如N=020,则M=101。形式化表述为F(N)=M。如果M不存在,则F(N)=0思想:首先从低位开始,找到第一个不为0的位置,标记为j,然后判断j的上一位是否为9,如果是的话将9与j交换,将9移到后面原创 2012-05-13 16:39:25 · 2401 阅读 · 0 评论 -
筛选法求解M以内的素数
void prime(int m){ int *a=(int *)malloc(sizeof(int)*(m+1)); int i,j=2,k=2; for(i=0;i<=m;i++) { a[i]=i; } while(j<=m/2) { if(a[j]!=0) { i=2*j; while(i<=m) {原创 2012-05-07 19:31:57 · 2664 阅读 · 0 评论 -
Top—K问题求解
求n个数中最大的K个。方法一:采用堆,建立一个大小为K的堆,然后依次与n个数进行比较。void topK(int a[],int n,int k){ int i; for(i=(k-1)/2;i>=0;i--) { heapAdjust(a,k,i); } for(i=k;i<n;i++) { if(a[0]<a[k]) { int原创 2012-05-09 22:01:26 · 2297 阅读 · 0 评论 -
求数组中出现次数超过一半的数
假设数组中某一元素出现次数超过总数一半,求该数。int getNumOverHalf(int *a,int n){ int i,temp,count; temp=a[0];count=1; for(i=1;i<n;i++) { if(count==0) { count++; temp=a[i]; continue; } if(原创 2012-05-07 21:04:53 · 3259 阅读 · 0 评论 -
按层遍历二叉树
给定一颗二叉树,将这棵二叉树分层打印,层与层之间有空行。例如:输出:AB CD EF G H主要实现函数如下:void visitByLevel(BiNode * head){ List *pre=NULL; List *post=NULL; List *current=NULL; if(head!=NULL) { List *temp=(Lis原创 2012-05-05 15:18:16 · 1885 阅读 · 0 评论 -
根据先序和中序遍历求解后序遍历结果
采用递归算法如下:每次从先序遍历中找到根节点,然后在中序遍历中根据根节点将串分成左右两部分,依此递归。#include #include int findPos(char inTree[],char c,int in_i,int in_j){ int i; for(i=in_i;i<=in_j;i++) { if(inTree[i]==c) { return i原创 2012-05-05 13:06:10 · 3455 阅读 · 0 评论 -
大数相乘(c算法)
当两大较大的数相乘时,如果结果直接用整数表示,则有可能溢出,为了解决这个问题,将数用串的形式表示。#include #include #include char * multi(char *mul1,char * mul2){ int len1=strlen(mul1); int len2=strlen(mul2); int c=0,temp=0,k=0,i,j;//c保存原创 2012-04-23 19:50:42 · 2988 阅读 · 1 评论 -
int *p[4]与int (*q)[4]的区别
以上定义涉及两个运算符:“*”(间接引用)、“[]”(下标),“[]”的优先级别大于“*”的优先级别。 首先看int *p[4],“[]”的优先级别高,所以它首先是个大小为4的数组,即p[4];剩下的“int *”作为补充说明,即说明该数组的每一个元素为指向一个整型类型转载 2011-10-11 20:41:05 · 6398 阅读 · 1 评论 -
c++笔试,求数组中出现奇数次的2个数
题:有N+2个数,N个数出现了偶数次,2个数出现了奇数次(这两个数不相等),问用O(1)的空间复杂度,找出这两个数,不需要知道具体位置,只需要知道这两个值。 求解:如果只有一个数出现过奇数次,这个就比较好求解了,直接将数组中的元素进行异或,异或的结果就是只出现原创 2011-10-11 19:10:01 · 5971 阅读 · 0 评论 -
兄弟字符串求解
如果两个字符串的字符一样,但是顺序不一样,被认为是兄弟字符串,问如何在迅速匹配兄弟字符串(如,bad和adb就是兄弟字符串)。分析:以下解法就是分别统计源字符串和目标字符串中每个元素的个数,然后判断个数是否相同,复杂度o(2*n) bool isbrother(str原创 2011-09-25 20:02:38 · 5044 阅读 · 2 评论 -
位运算应用口诀和实例
位运算应用口诀和实例 位运算应用口诀 清零取反要用与,某位置一可用或若要取反和交换,轻轻松松用异或移位运算要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 " 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如转载 2011-09-23 10:59:31 · 2134 阅读 · 0 评论
分享