摘要: 1. 静态库和动态库的基本概念静态库,是在可执行程序连接时就已经加入到执行码中,在物理上成为执行程序的一部分;使用静态库编译的程序运行时无需该库文件支持,哪里都可以用,但是生成的可执行文件较大。动态库,是在可执行程序启动时加载到执行程序中,可以被多个可执行程序共享使用。使用动态库编译生成的程序相对较小,但运行时需要库文件支持,如果机器里没有这些库文件就不能运行。2. 如何使用动态库如何程序在连接时使用了共享库,就必须在运行的时候能够找到共享库的位置。linux的可执行程序在执行的时候默认是先搜索/lib和/usr/lib这两个目录,然后按照/etc/ld.so.conf里面的配置搜索绝对路径。 阅读全文
posted @ 2013-03-02 14:04 landy聪 阅读(159) 评论(0) 推荐(0) 编辑
摘要: gcc的学习在C接触到linux以后就开始不断的学习,也知道了一些基本的用法,但是关于gcc的使用还是有很多值得我们加深的地方。gcc只是一个编译工具而已。也就相当于我们在windows环境下的visual c++等一样,区别是visual c++是基于IDE的,而gcc是这些IDE的基础。学习linux程序设计必然会学习gcc。gcc实质是完成程序的编译和链接,程序的编译是指从一种文件类型转换到另一种文件类型的过程。一个C语言程序转换为可执行程序的基本步骤如下:1、编写程序(vi,emacs等软件)2、程序预编译(cpp)3、编译成汇编程序(cc)4、汇编程序(as)5、链接程序(ld)其中 阅读全文
posted @ 2013-03-02 13:51 landy聪 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 单个源文件生成可执行程序下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: /* helloworld.cpp */#include <iostream>int main(int argc,char *argv[]){ std::cout << "hello, world" << std::endl; return(0);}程序使用定义在头文件 iostream 中的 cout,向标准输出写入一个简单的字符串。该代码可用以下命令编译为可执行文件: $ g++ helloworld.cpp编译器 g++ 阅读全文
posted @ 2013-03-01 20:35 landy聪 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 原文:http://blog.csdn.net/ceven2010/article/details/7406341一、移动光标1、左移h、右移l、下移j、上移k2、向下翻页ctrl + f,向上翻页ctrl + b3、向下翻半页ctrl + d,向上翻半页ctrl + u4、移动到行尾$,移动到行首0(数字),移动到行首第一个字符处^5、移动光标到下一个句子 ),移动光标到上一个句子(6、移动到段首{,移动到段尾}7、移动到下一个词w,移动到上一个词b8、移动到文档开始gg,移动到文档结束G9、移动到匹配的{}.().[]处%10、跳到第n行 ngg 或 nG 或 :n11、移动光标到屏幕顶端 阅读全文
posted @ 2013-02-28 16:01 landy聪 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 本文转载自董的博客:http://dongxicheng.org/structure/permutation-combination/1. 前言本文介绍了常用的排列组合算法,包括全排列算法,全组合算法,m个数选n个组合算法等。2. 排列算法常见的排列算法有:(A)字典序法(B)递增进位制数法(C)递减进位制数法(D)邻位对换法(E)递归法介绍常用的两种:(1) 字典序法对给定的字符集中的字符规定了一个先后关系,在此基础上按照顺序依次产生每个排列。[例]字符集{1,2,3},较小的数字较先,这样按字典序生成的全排列是:123,132,213,231,312,321。生成给定全排列的下一个排列 所 阅读全文
posted @ 2012-11-26 22:31 landy聪 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 反向输出字符串的方法很多,实现也比较简单。下面是一种简单的用递归实现的反向输出字符串的实现。void Print(){char temp;if((temp=getchar())!='#')Print();//递归if(temp!='#')cout<<temp;}int main(){cout<<"请输入字符串以#结束:"<<endl;Print();cout<<endl;return 0;} 阅读全文
posted @ 2012-03-02 10:48 landy聪 阅读(517) 评论(1) 推荐(0) 编辑
摘要: 1、概述在解决一些复杂问题,特别是解决一些规模较大的问题时,常常将问题进行分解。具体来说,就是将一个规模较大的问题分割成规模较小的同类问题,然后将这些小的问题逐个加以解决,最终也就将整个大的问题解决了。这种分而治之的思想称为分治的思想。所谓递归算法,就是一种直接或间接地调用原算法本身的一种算法。递归与分治的算法思想往往相伴而生。2、问题实例例:求正整数不同的划分个数。1)问题解释:将一个正整数n表示成一系列正整数之和: n=n1+n2+......+nk称为正整数n的一个划分。求正整数n的不同划分个数。2)问题分析根据正整数划分的定义,可以总结出一下规律:设标记P(n,m)表示正整数n... 阅读全文
posted @ 2012-03-02 10:14 landy聪 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 1、概述穷举法,又称强力法,它是一种最为直接,实现最为简单,同时又最为耗时的一种解决实际问题的算法思想。其基本思想是:在可能得解空间中穷举出每一种可能得解,并对每一个可能进行判断,从中得到问题的答案。使用注意:一是解空间的划分必须保证覆盖问题的全部解。二是解空间集合及问题的解集一定是离散的集合。评价:穷举法用时间上的牺牲换来了解的全面性保证,适用于一些规模不是很大的问题的解决。2、应用实例例:问题:寻找1—100之间的素数解决这个问题最简便的方法就是使用穷举法。判断一个整数是否为素数的函数isPrime;View Code 1 int isPrime(int n) 2 { 3 ... 阅读全文
posted @ 2012-03-01 12:15 landy聪 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题目描述:已知一个斜三角:22 32 14 77 45 12 34 37 23 44 23 15 34 54 88 从最左上角元素开始往右或往右下走,请问顺着哪条路所经过的值的总和最大,如可以有路线:22,32,34,23,54 ; 22,12,44,34,88等等请求出满足值总和最大的那条线路。View Code 1 void Func(int a[],int n) 2 { 3 int *b = new int[n]; //记录从某个节点开始最大路径上的下一个节点 4 int *c = new int[n]; //记录从某个节点开始最大路径的长度 5 f... 阅读全文
posted @ 2012-02-28 17:08 landy聪 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 1、单链表逆置View Code 1 //1.单链表逆置 2 template<class Type> void LinkList<Type>::Reverse() 3 { 4 if(Head->Next==NULL) 5 { 6 cout<<"链表为空!"<<endl; 7 return; 8 } 9 Node *cur=Head->Next;10 Node *temp=cur->Next;11 if(NULL==cur || NULL==temp)12 {13 return;14 ... 阅读全文
posted @ 2012-02-26 11:55 landy聪 阅读(173) 评论(0) 推荐(0) 编辑