
c/c++
文章平均质量分 58
liu_qiqi
这个作者很懒,什么都没留下…
展开
-
用递归算法判断数组a[N]是否为一个递增数组
1.递归一定要有退出条件,否则将无限循环。2.关于递归的返回值是要注意的。下面列举两种方法,原理相同,递归判断。方法1:bool charge(int p[],int n){ static int m=0; //这个一定要定义为static,否则每次调用都是从0开始。 if(m == n-1) return true; else {原创 2013-06-21 15:27:57 · 9600 阅读 · 1 评论 -
实现字符串中数字字符向数字转换
/*需要考虑的情况有:1.判空2.正负号,只能出现在字符的第一位3.非法的,即字符不是数字字符*/int StrToInt(char * str) { long long num=0; int flag=1; if(str == NULL || *str == '\0') { return -1; }原创 2013-09-21 23:00:18 · 845 阅读 · 0 评论 -
实现两个有序数组的归并
实现两个有序数组的归并,仅仅提供一种思想,提高效率。从后向前遍历。这样只需要一趟遍历即可完成排序。void main(){ int a[10]={1,3 ,5, 9 ,12}; int b[]={2,4, 6, 15,17}; int lengA=sizeof(a)/sizeof(int)-1; int lengB=sizeof(b)/sizeof(int)原创 2013-10-07 11:58:01 · 1481 阅读 · 0 评论 -
两个队列模拟栈的操作(stl实现)
使用模板,deque容器,并采用了其提供的多种方法实现,deque c 创建一个空的dequedeque c1(c2) 复制一个deque。deque c(n) 创建一个deque,含有n个数据,数据均已缺省构造产生。deque c(n, elem) 创建一个含有n个elem拷贝的dequedeque c(beg,end) 创建一个以[beg;end)区间的dequec.~转载 2013-10-07 15:50:15 · 1051 阅读 · 0 评论 -
Vector在C++中的详细说明
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#include vector属于std命名域的,因此需要通过命名限转载 2013-10-07 16:00:19 · 759 阅读 · 0 评论 -
有了malloc/free为什么还要new/delete ?
malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于mall转载 2013-10-09 08:40:46 · 2290 阅读 · 0 评论 -
n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始,每次从这个圆圈中删除第m 个数字
// 题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始,每次从这个圆圈中删除第m 个数字 方法1,思想:采用循环链表的结构。也是对圆圈的模拟。思想好理解方法2,使用数组,但是要注意,对循环数组,也是对圆圈的模拟。代码量少方法1:#include using namespace std;typedef struct LNode{ int原创 2013-01-06 22:19:48 · 691 阅读 · 0 评论 -
动态库dll加载方式
它是Dynamic Link Library 的缩写形式,DLL 是一个包含可由多个程序同时使用的代码和数据的库。不能独立运行,需要其他函数调用运行。优点:通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。DLL 还有助于共享数据和资源,节省空间。静态链接库的函数库,两者的主要区别在于使用方法上面。静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不原创 2013-10-10 10:08:08 · 1372 阅读 · 0 评论 -
C++中public,protected,private访问
第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由转载 2013-10-10 11:40:58 · 702 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
Sizeof与Strlen的区别与联系一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof转载 2013-06-18 23:01:35 · 731 阅读 · 0 评论 -
重载,重写(覆盖),隐藏
JAVA中语言中方法(函数)调用有两种特殊的形态:重载与重写;而C++由于增加了virtual这个虚函数关键字,给函数调用又增加了变数:除了重载、重写(也称覆盖)之外还多了隐藏这么一说。我相信我们绝大多数人写代码时,为了程序的可读性与赶速度的原则,下意识的避开这些类似于脑筋急转弯的语法,尽量使用不同的函数名来区分基类与派生类的函数(当然,不能避开的时候也是非常多的)。可是有时候,有些面试主考官总喜转载 2013-09-29 11:31:54 · 996 阅读 · 0 评论 -
c++ 关键字 总结(63个)
asmdefaultfloatoperatorstatic_castunionautodeleteforprivatestructunsignedbooldofriendprotectedsw转载 2013-10-14 20:33:36 · 1090 阅读 · 0 评论 -
stl map的基本使用
由于STL是一个统一的整体,map的很多用法都和STL中其它的东西结合在一起;map中由于它内部有序,由红黑树保证,因此很多函数执行的时间复杂度都是log2N的,如果用map函数可以实现的功能,而STL Algorithm也可以完成该功能,建议用map自带函数,效率高一些 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为转载 2013-10-07 09:59:59 · 715 阅读 · 0 评论 -
两个数相乘,小数点后位数没有限制,请写一个高精度算法
记录下用于大数操作的思想:字符串!!算法提示: 输入 string a, string b; 计算string c=a*b; 返回 c;1, 纪录小数点在a,b中的位置l1,l2, 则需要小数点后移动位置数为l=length(a)+length(b)-l1-l2-2;2, 去掉a,b中的小数点,(a,b小数点后移,使a,b变为整数)3转载 2013-09-20 16:44:17 · 3641 阅读 · 0 评论 -
c 运算符 优先级
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。恩,问这个问题的人太多了,懒得继续回答,直接贴上来自己看。。。优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]转载 2013-09-15 19:38:50 · 652 阅读 · 0 评论 -
求组合数: 求n个数(1....n)中k个数的组合
从网上down的例子,来自于:http://www.dayi.net/CExcellent/39108.asp,不得不说,递归真是没学好。弄了半天,终于给弄明白了,程序的意思。下面就分析下:m表示,当前已经挑的个数。初始为0.n表示当前挑的值可从n开始。k表示要挑选的个数,程序一开始就确定的。那么k-m表示,还有几个没有挑。因为程序是从1...n,开始的。k-m的值也可以表示,挑的值的原创 2013-06-22 17:10:38 · 6172 阅读 · 1 评论 -
求n个数(1,2,...,n)中k个数的组
网上的程序,终于没有采用递归,对其的几点说明:这逻辑。。。1.程序是通过push 函数中当前top的位置来判断是否满足k个数,如果当前top的位置为k-1,则返回1,否则,返回0;2.程序中如何改变数值呢?在pop的时候指针保存了当前要pop出去的值,然后再top-1。这样下次直接--,然后重新入栈即可。3.在第k个数的所有情况已经输出后,如何对第k-1个数,开始进行修改,进而组合呢?原创 2013-06-22 18:20:01 · 1701 阅读 · 0 评论 -
给定字符串A和B,输出A和B中的最大公共子串。
从网上down的例子,现在简要分析下。复杂度比较高,还是挺巧妙的。本人也没有想到更好的解决方法:1.用到了strstr函数,该函数再string.h头文件中有定义,竟然之前没有见过。哎。。该函数char *strstr(char *str1, char *str2)的意思就是从字符串str1中查找是否有字符串str2,如果有,从str1中的str2位置起,返回str1的指针,如果没有,返回nu原创 2013-06-23 21:54:49 · 5536 阅读 · 0 评论 -
利用hash表思想,实现查找到第一个在字符串中出现的字符
利用hash表的存储思想,先将表初始化,然后对表的内容存储值。比较特别的是,存入的值是输入字符的出现次数(也就是hash表中的冲突出现次数)。这里的hash函数,就是相当于输入字符的ASCII。输入字符相同,在address处就冲突,统计下来冲突次数。当冲突次数为1时,表示,此字符仅一次出现。问题解决。 #include using namespace std;#define MA原创 2013-01-06 21:20:37 · 785 阅读 · 0 评论 -
Fibonacci数列(效率较高)
/* 题目:定义Fibonacci 数列如下:/ 0 n=0f(n)= 1 n=1,2\ f(n-1)+f(n-2) n>2输入n,用最快的方法求该数列的第n 项。*/思想 :用两个数分别循环记录和,f1记录n为奇数时,f2记录n为偶数时。用i标记,每次记录两个和。这样比较快。 #include using namespace std;int main(原创 2013-01-07 23:03:26 · 651 阅读 · 0 评论 -
利用hashtable思想,保存在一个字符串中找到第一个只出现一次的字符
编程思想:利用hashtable的思想,将输入的字符,映射到一个哈希表中,hash函数为:对输入字符的ASCII码求模运算,映射到在hashtable中的具体下标。通过对hashtable的初始化,均为‘\0’,如果输入的字符,映射到hashtable的相应位置,其内容不是‘\0’,则表示已经有字符放置,则该字符一定不是只出现一次。 #include using namespace s原创 2013-01-05 23:11:24 · 573 阅读 · 0 评论 -
输出一个字符串中表示数字字符中的最长子串
输出一个字符串中表示数字字符的最长子串(比较简单)注意:使用指针做参数,可在main中返回 int continumax(char *outputstr, char *inputstr){char *in = inputstr, *out = outputstr, *temp, *final;//temp在这里的作用是很大的。它始终直线当前比较的数字字符串。int coun原创 2013-06-22 12:15:56 · 1040 阅读 · 0 评论 -
使用模板类,实现用两个栈模拟队列的功能
// 使用模板类,实现用两个栈模拟队列的功能#include #include #include using namespace std;templatestruct MyQueue{ void push(T &t) { s1.push(t); } T front() { if(s2.empty()) { if(s1.siz转载 2013-07-22 11:29:51 · 801 阅读 · 0 评论 -
求和(单例模式,初始化列表,容器,迭代器)
使用单例模式,初始化列表,容器,迭代器#include #include using namespace std;class sum{public: const int num ; void toSum( ); static sum * getInstance() { if( NULL == pInstance ) pInsta原创 2013-01-20 18:02:29 · 709 阅读 · 0 评论 -
打印螺旋矩阵
将打印一圈分解为四步:从左到右,从上到下,从右到左,从下到上。圈打印循环何时结束呢?当当前开始点坐标startx*2每一圈打印结束条件是什么呢?从左到右,每一圈的开始,所以必然会开始。从上到下,那么至少要有两行,从右到左,那么至少要有两行两列,从下到上,至少要有三行两列。 static int number=1;void PrintMatrixInCircle(int num[原创 2013-08-26 11:00:48 · 700 阅读 · 0 评论 -
a[0]变为a[1]到a[n-1]的积,a[1]变为a[0]和a[2]到a[n-1]的积,……a[n-1]为a[0]到a[n-2]的积。要求:具有线性复杂度。不能使用除法运算符。
搜狗的一道笔试题,a[0]变为a[1]到a[n-1]的积,a[1]变为a[0]和a[2]到a[n-1]的积,……a[n-1]为a[0]到a[n-2]的积。要求:具有线性复杂度。不能使用除法运算符。#include using namespace std; int main(void) { int a[]={1,2,3,5,6}; int const N=size原创 2013-09-04 09:54:49 · 1131 阅读 · 0 评论 -
vs2010打包过程
1、 在vs2010 选择“新建项目”----“其他项目类型”----“Visual Studio Installerà“安装项目”:命名为:Setup1 。这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“开始菜单”中的显示的内容,转载 2015-07-23 15:19:37 · 800 阅读 · 0 评论