- 博客(27)
- 资源 (9)
- 收藏
- 关注
原创 一道笔试题
// 给定一个数组a[i],求数组b[i]:// b[i] = a[0]*a[1]*...*a[i-1]*a[i-2]*...*a[n-1]=a[0]*a[1]*...*a[n-1]/a[i]// 但是不能用除法#include // 有除法void method1(double*a, double *b, int n){ int i; double
2013-04-24 00:55:12 529
原创 虚函数深入挖掘-构造函数与虚函数【1】
构造函数不能为虚函数,因为虚函数依赖虚函数表,构造函数尚未执行时,指向虚函数表的指针还不存在,因此显然构造函数无法成为虚函数。另外子类名字与父类不同,类的构造函数无法继承,更不能通过指针或引用去调用,因此跟虚函数也沾不上边。但是构造函数能否调用虚函数?按理说,构造函数没执行完,虚函数表都没有呢还。 先来一个最基本的代码: #include class A{publi
2013-04-23 19:08:38 653
原创 shell【find】
下载:http://vdisk.weibo.com/s/ypqVA/1366517349 参考:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=2020461 Find1.大小-szie n[cwkMG]Size这个东西是这样,默认的单位是块,一个块是512字节。c是字节,k是1024字节,M是10
2013-04-21 11:51:08 639
原创 自增运算符【2】
#include int main(){ int a=4; int b=4; int c=4; int d=4; int e=4; int f=4; int g=4; a=a++; b=++b; c+=c++; d+=++d; ++e+=e; ++f+=f++; ++g+=++g; printf("a=%d\n",a);
2013-04-18 22:08:25 660
原创 自增运算符在gcc和vc下的不同结果
#include int main(){ int i=10; int j=10; i=i++; j=++j; printf("%d,%d\n", i, j); getchar(); return 0;} VS下: 11,11g++/gcc:10,11 如果是一个对象,重载了++操作符,那么结果也是10,11vc下,看过汇编
2013-04-18 16:29:53 860
转载 纯虚函数
在某些类里声明纯虚析构函数很方便。纯虚函数将产生抽象类——不能实例化的类(即不能创建此类型的对象)。有些时候,你想使一个类成为抽象类,但刚好又没有任何纯虚函数。怎么办?因为抽象类是准备被用做基类的,基类必须要有一个虚析构函数,纯虚函数会产生抽象类,所以方法很简单:在想要成为抽象类的类里声明一个纯虚析构函数。 class awov { public: virtual
2013-04-17 15:33:04 2550
原创 RTTI
// 头文件typeinfo或typeinfo.h#include #include // 编译选项: /GRclass A{public:int a;virtual ~A(){}};class B:virtual public A{public:int b;};class C:virtua
2013-04-17 14:38:07 670
原创 虚函数,虚继承,等等
【1】 构造函数为什么不能是虚函数?————Constructors ————Constructors can't be virtual.Creating a derived object invokes a derived-class constructor,not a base-class constructor.The derived-class constructor
2013-04-16 23:18:59 714
原创 三角形或圆内均匀分布随机点的计算
圆: 均匀产生角度,均匀产生半径。半径的概率应与其长度一致。 clearfor i=1:1000; theta=rand(); x=rand(); r=sqrt(x); % 均匀的半径 x1(i)=r*cos(2*pi*theta); x2(i)=r*sin(2*pi*theta); end
2013-04-15 23:42:02 6095
原创 概率算法 -- 洗牌
遍历数组,遇到第i个元素时,产生一个i到n-1之间的随机数,然后两个位子的数互换。 void shuff(int *ap, int n){ int i; for (i=0; i { int t = rand()%(n-i)+i; swap(a[i],a[t]); } } 第一个元素
2013-04-15 21:51:50 950
原创 概率算法 -- 从集合中选取N个不重复的元素
这个问题见了很多,一般表述是,1到n的整数中随机选k个这k个不能重复。变一下即可以是n个元素选k个,不能重复。 有不同复杂度的算法。第一个是笨办法:(1)随机选一个数,然后判断这个数字是否已经被选过了(是否重复),不过不重复,那就就选他了,如果重复,就再随机选一个。空间复杂度:O(1)时间复杂度:O(k^2)而且有一个问题,如果是100个选90个,那么最后冲突的概率
2013-04-15 21:26:03 7480
原创 概率算法-均匀分布产生正态分布
大部分语言只能产生均匀分布的随机数。C语言用(double)rand()/RAND_MAX产生0到1之间均匀分布的随机数。那么如何产生正态分布的呢?一般,一种概率分布,如果其分布函数为y=F(x),那么,y的范围是0~1,求其反函数G,然后产生0到1之间的随机数作为输入,那么输出的就是符合该分布的随机数了: y= G(x) 以指数分布为例,假设参数为a,那么概率密度函
2013-04-15 18:54:56 35941 2
原创 awk根据第一个字段打印内容
一个字段包含各种不同的值,有的值出现了多次,有的值只出现一次。如果(1)该值只出现一次,那么就打印“1 Time\n $0”(2)出现两次或三次,则打印“2 Time\n $0\n$0”意思是说把两行都打出来,如果为三行,则打印3行:“3 Time\n$0\n$0\n$0”(3)如果出现四次以上,则打印最开始的两行和最后两行。 文件:AX BX 1AX BX
2013-04-14 10:48:49 2307
原创 awk除去重复行
awk去除重复行,思路是以每一行的$0为key,创建一个hash数组,后续碰到的行,如果数组里已经有了,就不再print了,否则将其print 测试文件: 用awk: 用sort+uniq好像出错了: 到底是为什么uniq出错了呢?不知道,但是awk真的很强大。两者的差异还在于,awk保持了文件中原本的每行的顺序,而sort必须排序,这样就变成按字母
2013-04-13 23:32:02 20179
原创 awk矩阵相加
矩阵a:1 2 34 5 67 8 9 矩阵b:3 5 27 3 24 2 45 分别存在m1.txt和m2.txt中。【1】使用awk 'NR==FNR{for(i=1; i 【2】用getline 或
2013-04-13 15:10:28 1722
原创 awk处理多个文件
参考:http://cwind.blog.51cto.com/62582/685253 cat file1:0011AAA 200.00 200503210012BBB 300.00 200506210013DDD 400.00 200506220014FFF 500.00 20050401cat file2:I0011 11111I0012 22222
2013-04-13 14:37:17 1069
原创 awk如何处理2个文件
处理两个文件时,形式如下:awk 'BEGIN{} {} END{}' file1 file2 那么如何判断处理的是哪个文件呢?答案是用NR变量和FNR变量。NR变量随着读取的行数从1递增,FNR也递增,但是,遇到新文件时又回到1。所以,如果NR==FNR,就说明是第一个文件,如果NR!=FNR,就说明是第二个文件。 【1】NR与FNR的区别。文件1:us.txts
2013-04-13 14:02:00 5396
原创 返回值是一个struct或class对象的情形【4】
C++代码:struct AB{ int ia; int ib; int ic; AB(){}};AB su_4() // 返回一个对象{ AB c; c.ia=100; c.ib=150; c.ic=200; return c;}int main(){ AB r; r=su_4(); // 函数调用 getchar(); ret
2013-04-07 22:01:09 1738
原创 返回引用【3】
--- d:\test\test\main.cpp ------------------------------------------------------ 1: 2: #include 3: 4: 5: int &su_1(int & a_, int b_) 6: { // 下面这一段时准备工作,忽略004113
2013-04-07 14:11:31 518
原创 引用输入参数【2】
引用做输入参数,push的时候push的是其地址值。#include int su_1(int & a_, int b_){ int c; c=a_+b_; return c;}struct AA{int aa; int bb;};typedef AA TYPE;TYPE su_3(TYPE a_, TYPE b_){ TYPE c; c.aa=a_
2013-04-07 13:06:00 560
原创 函数调用具体过程-堆栈【1】
return (a+b)和a+b;return c的区别。 看调用约定,顺便理解下函数调用的具体过程。一般传值调用的时候,先把参数逐个push到栈中去,然后修改ebp栈基址寄存器,push一些寄存器的值。子函数内部就从刚才push进的参数里拿数就行了。返回值写到eax寄存器中去。以下为测试代码。#include int su_1(int a_, int b_){
2013-04-07 11:16:23 751
原创 指针隐式转换-微软实习笔试题
#include using namespace std;class A{public: long a;};class B:public A{public: long b;};void seta(A *p, int i){ p[i].a=2;}int main(){ B bb[4]; int i
2013-04-06 18:04:41 1117 2
转载 静态链表的操作实现
静态链表结构:我们对数组的第一个和最后一个元素做特殊处理,不存数据。第一个元素的cur存放备用链表的第一个结点的下标,最后一个元素存放含有值的第一个元素的下标,相当于头结点的作用。当链表为空时,最后一个下标的cur为0当链表满了时,第一个下标的cur为MAXSIZE-1,即指向最后一个单元的地址#define MAXSIZE 1000 typedef struct{
2013-04-04 13:27:02 941
原创 广度优先搜索-连连看
广度优先搜索:连连看#include #include char aa[6*6+1]={"ABF...CE....D....$..#.%D....EC...FBA"}; // %,#为阻挡// 0 1 2 3 4 5// 0 A B F . . .// 1 C E . . . .// 2 D . . . . #// 3 . . % . $ D// 4 .
2013-04-02 15:20:23 1321
原创 深度优先搜索
深度优先搜索,求矩阵中有几个连通域:#include #include int aa[6*6]={1,1,0,0,1,0,1,0,1,1,0,1,0,0,1,1,0,1,1,0,1,0,1,1,1,1,0,1,0,1,0,1,0,1,0,1};int biaoji[6*6];void dfs(int *aa, int i, int j){ biaoji[i*
2013-04-02 13:43:58 572
相关向量机(RVM)论文6篇
2011-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人