
c++
文章平均质量分 81
menghuanxiy
这个作者很懒,什么都没留下…
展开
-
农田开发 NOJ (已知N个点选取3个求最大三角形面积问题)
E - 农田开发时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 83 测试通过 : 43 比赛描述有一块农田,田地里安放上N个小木桩,木桩的占地面积忽略不计。选择三个小木桩,使得三个小木桩的围成的三角形占地面积最大。输入 第一行一个整数N(3<=n<=100),便是木桩个数。 接下来N行,每行含有两个整数xi和yi(-10000原创 2015-07-23 20:36:35 · 1158 阅读 · 0 评论 -
阿里机试题目_虚函数
class my{};int main(){ my data; cout<<sizeof(data)<<endl;}当我们建立一个类,类中什么数据也没定义,建立该类的一个对象,可以测试其对象所占的字节数为1。class my{ char b;};int main(){ my data; cout<<sizeof(data)<<endl;}这个类中只有一个char型数原创 2015-08-13 22:34:53 · 660 阅读 · 0 评论 -
线性表操作
线性表操作时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 3897 测试通过 : 865 比赛描述线性表是n个元素的有序集合(n≥0),n是线性表中元素的个数,称为线性表的长度。可以用一组地址连续的存储单元依次存储线性表中元素,采用这种存储方式的线性表称为顺序表。原创 2015-07-24 16:32:10 · 624 阅读 · 0 评论 -
线性表操作
线性表操作时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 3897 测试通过 : 865 比赛描述线性表是n个元素的有序集合(n≥0),n是线性表中元素的个数,称为线性表的长度。可以用一组地址连续的存储单元依次存储线性表中元素,采用这种存储方式的线性表称为顺序表。原创 2015-07-24 16:27:18 · 695 阅读 · 0 评论 -
判断一个单链表中是否存在环
单链表中存在环,表明是单链表中最后一个结点的指针指向单链表中其他结点。如图:4结点指向表中1结点。上图单链表中只存在一个结点,但是它的指针域指向自己。算法思路:可以初始化两个指针p1、p2分别指向链表的表头节点。p1指针每次更新:p1=p1->next->next;p2指针更新:p2=p2->next;当链表中没有环的时候,p1指针达到链表末尾,原创 2015-08-18 20:34:34 · 804 阅读 · 0 评论 -
指针的各种形式
2013年中兴笔试题简答题第2小题,指针的多种形式。2、请分别说出下面的A是什么?(1) int (**A)[10] A是什么A是一个指向 10个int类型元素数组的指针的指针。(2)int *(*A)[10] A是什么?A是一个指向 10个int *类型元素数组的指针。(3)int (*A[10]) () A是什么?A值指针数组,数组中每个指针指向一个输入参数为原创 2015-08-19 14:34:31 · 783 阅读 · 0 评论 -
关于c++派生类构造函数的思考
一道2011年阿里巴巴笔试题,主要考察派生类构造函数的执行过程#includeusing namespace std;class A { public: A() { cout ~A() { cout}; class B:public A { public: B(A &a):_a(a) {原创 2015-08-19 21:44:42 · 421 阅读 · 0 评论 -
strstr函数的对比
程序员面试宝典上有道题目:请写写一个函数模拟c++中的strstr()函数。strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL。const char * strstr1(const char *string,const char * strCharSet){ for(i原创 2015-08-07 20:58:26 · 590 阅读 · 0 评论 -
数组中重复的数字
题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。参考>一书。1、当该数组是无序时,遍历该数组,将该数组的每一个元素和它后面的元素作比较,若相同则函数返回。该方法的时间复杂度原创 2015-09-01 14:50:37 · 729 阅读 · 0 评论 -
使用二分法求解
给定一个排好升序的数组A[1]、A[2]、……、A[n],其元素的值都两两不相等。请设计一高效的算法找出中间所有A[i] = i的下标。并分析其复杂度。思路:假设数组长度为len,则数组第一个元素的下标为0,最后一个元素的下标为len-11、当数组中第一个元素A[0]大于len-1时,因为数组中元素是升序,所以数组中其他元素都比len-1大。这种情况下A[i]不可能等于i。2、当数原创 2015-08-22 16:46:14 · 900 阅读 · 0 评论 -
二叉树镜像使用递归法和循环法
该题目参考自>第19题目求一颗树的镜像的过程:我们先前序遍历这颗树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有非叶子结点的左右子节点之后,就得到了树的镜像。a图中为一个二叉树,遍历此二叉树,先交换根节点8的左右子树,如图中红色区域。如图c,接着遍历到10结点,交换其左右子树。如图中红色区域。如图e,遍历到结点6,交换其左右子树。如原创 2015-08-11 22:52:33 · 848 阅读 · 0 评论 -
求两个字符串的最大公共字串问题
以下题目来自阿里2015校园招聘、牛客网。给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如,query为 "acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。假设text的长度为m,que原创 2015-08-21 21:17:23 · 1178 阅读 · 0 评论 -
strcpy与memcpy的区别
原文:http://blog.chinaunix.net/uid-23922099-id-3555928.html#includeusing namespace std;char * strcpy(char * strDest, const char * strSrc) // 实现strSrc到strDest的复制{ if ((strDest == NULL) || (strSrc转载 2015-10-06 14:03:24 · 533 阅读 · 0 评论 -
递归法和循环法判断数组是否递增
#includeusing namespace std;#include bool Judgment(int a[], int num){ static int i = 0; bool flag = true; for(i=0; i<num-1; i++) { if (a[i]>=a[i+1]) //假如发现哪两个不是递增,立刻跳出; { flag = f原创 2015-10-06 15:31:01 · 749 阅读 · 0 评论 -
反转字符串递归与非递归方式
#includeusing namespace std;char *reverse(char *str)//非递归方式{ if(str!=NULL) { int length = strlen(str); for(int i=0;i<length/2;++i) { char temp=str[i];原创 2015-10-06 13:23:48 · 466 阅读 · 0 评论 -
判断一个正整数是否为2的整数次幂的宏定义
判断一个正整数是否为2的整数次幂的宏定义#include //取反加1后与原数相与还是等于原来的那个数就说明是2的n次幂#define S(n) ( ((n & ((~n) + 1))) ==n) int main(){ int i; while (1) { scanf("%原创 2015-09-19 19:58:44 · 1794 阅读 · 0 评论 -
字符串移位
void*pszStringRotate(char*pszString, intnCharsRotate)比如ABCDEFG,移3位变DEFGABC,要求空间复杂度O(1),时间复杂度O(n)。过程如下:ABCDEFG第一步:局部翻转ABC DEFG == = 》 CBA GFED第二步:整体翻转CBA GFED原创 2015-10-09 09:45:16 · 554 阅读 · 0 评论 -
位操作
#includeusing namespace std;#define BIG_LITTLE_SWAP_16(n) ((((unsigned short)(n) & 0xFF00) >> 8) | (((unsigned short)(n) & 0x00FF) << 8))#define BIG_LITTLE_SWAP_32(n) ((((unsigned int)(n) & 0xFFFF0原创 2016-09-05 22:46:57 · 490 阅读 · 0 评论 -
struct与class的不同
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class还能有什么区别?最本质的一个区别就是默认的访问控制: 默认的继承访问权限struct是pu转载 2015-08-27 20:57:03 · 407 阅读 · 0 评论 -
c++大数加减法的实现
输入第一行,输入一个正整数 T (1然后有T行,每行两个整数 a 和 b输出对于每对 a和b,输出 a+b 的结果样例输入41 2-5 31 -1-1111111111111 2222222222222样例输出3-201111111111111题目原创 2015-07-23 08:55:32 · 864 阅读 · 0 评论 -
返回一个字符串的前n位字符
参考自c++primer plus函数功能:输入一个字符串,返回值为一直字符指针,这个指针指向输入字符串的前n个字符。第一种:char * left1(const char *str,int n){ if(n<0)//异常处理 n=0; char *p =new char [n+1];//开辟新的内存空间 int i; for(i=0;i<n&&str[i];i++)原创 2015-08-14 10:56:35 · 2702 阅读 · 0 评论 -
城市电话号码
【测试自动化6】城市电话号码描述:某城市电话号码由三部分组成,分别是:地区码:空白或者三位数字;前缀:非0开头的三位数字后缀:4位数字假定被测程序能接受一切符合上述规定的电话号码,输出0拒绝一切不符合规定的电话号码,输出1.请编写程序实现上述描述的功能.运行时间限制:10 Sec内存限制:200 MByte原创 2015-07-27 11:14:54 · 3547 阅读 · 0 评论 -
循环报数
循环报数描述:输入1个数字和多个字符,中间均以空格隔开。假设数字取值为m(范围1~9),后面字符个数为n。假设n个字符围成一圈,从第一个字母开始循环报数,当数到m以后,第m个字母就出列,直到这n个字母全部出列。最后,按照出列的顺序输出这些字母,中间仍以空格隔开。取值范围:m为1到9, 字符个数n大于1小于20。运行时间限制:无限制内存限制:无原创 2015-07-27 10:55:34 · 1283 阅读 · 2 评论 -
最小长方形
最小长方形描述:给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内。长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内。运行时间限制:10 Sec内存限制:128 MByte输入:测试输入包含若干测试用例,每个测试用例由一系列坐标组成,每对坐标(x y) 占一行,其原创 2015-07-27 11:16:09 · 717 阅读 · 0 评论 -
判断一个数字中是否包含两个相同的字串
判断一个数字中是否包含两个相同的子串描述:判断给定的一个数字,把它当成字符串以后,该字符串中是否包含相同的两个子串,子串的长度要求大于等于2。比如:12123,该数字包含两个“12”子串;又比如:1223122,该数字包含两个“122”子串。运行时间限制:无限制内存限制:无限制输入:待判断的正整型数字,最大长度原创 2015-07-27 11:36:43 · 752 阅读 · 0 评论 -
超长正整数相加
超长正整数相加描述:题目描述:请设计一个算法完成两个超长正整数的加法。 要求实现函数:void AddLongInteger(char * pcAddend, char * pcAugend, char * pcAddResult);输入参数:char * pcAddend:加数char * pcAugend:被加数char原创 2015-07-27 11:10:04 · 999 阅读 · 0 评论 -
const int *与int *const 的区别
参考自:http://blog.sina.com.cn/s/blog_6af956630100vpv2.html有道选择题给出以下定义,下列哪些操作是合法的?const char *p1 = "hello";char* const p2 = "world";A、p1++ B、p1[2]='w';原创 2015-08-08 22:40:57 · 1183 阅读 · 0 评论 -
在数组中需找连续“1”的起始位置和结束位置
项目中总是需要求一个向量中连续的非零元素的起始位置。这个问题可以抽象为以下问题。问题描述:一个一维数组中的元素不是1就是0,要求求出数组中每段连续是“1”的元素的起始位置和结束位置。如上图是一个含有10个元素的一维数组,统计所有连续为1的段的位置,以0作为数组的起点。则1的位置为:起始位置 结束位置第一段 0 0第二段 2 4第三原创 2015-08-07 19:28:10 · 2897 阅读 · 0 评论 -
处理字符串
【测试自动化8】处理字符串描述:程序的规格说明要求:如果第一个字符不是#,则输出N;如果第一个字符是#,第二个字符不是数字,则输出M;如果第一个字符是#,例如#n012345则输出从第三个字符开始计算,第0到第n个之间所有字符,n等于3则输出0123,如果n超出长度范围则输出从第三个字符开始全部字符.请实现上述描述的程序.原创 2015-07-28 11:19:48 · 650 阅读 · 0 评论 -
斐波那契序列
斐波那契(Fibonacci1170-1250),意大利最杰出的数学家。其父为比萨的商人,他认为数学是有用的,因此送斐波那契向阿拉伯教师们学习数学,掌握了印度数码之一新的记数体系,后来游历埃及、叙利亚、希腊、西西里、法国等地,掌握了不同国家和地区商业的算术体系,1200年回答比萨,潜心研究数学,1202年写成《算盘全集》,此书广为流传,为在欧洲传播印度-阿拉伯数码起了重要的作用。1228斐波那转载 2015-08-24 17:10:44 · 1189 阅读 · 0 评论 -
反转链表的循环方式和递归方式
出自《剑指Offer》第16题。题目:定义一个函数,输入一个链表的头结点,反转该链表并输出翻转后的链表的头结点。链表的结点定义:struct ListNode{int m_nKey;ListNode *m_pNext;};反转的过程主要是先把pNode所指向的结点用临时指针保存一下,然后你转pNode,使得pNode指向它的前一个结点。最后再更新pNod原创 2015-08-11 21:01:56 · 680 阅读 · 0 评论 -
二叉树的遍历
二叉树的先序遍历,是先输出二叉树的根节点,再输出二叉树的左子树和右子树。当输出左右子树的时候,也是像上述一样处理,先输出根节点,再输出左右子树。二叉树的中序遍历,是先输出二叉树的左子树,再输出二叉树的根节点和右子树。当输出左右子树的时候,也是像上述一样处理,先输出左子树,再输出根节点和右子树。二叉树的后序遍历,是先输出二叉树的左子树,再输出二叉树的右子树和根节点。当输出左右子树的时候,也是原创 2015-08-10 22:24:51 · 575 阅读 · 0 评论 -
使用移位操作符实现无符号整数位反转
>>左移各二进位全部左移若干位,高位丢弃,低位补0>> 右移各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)。左移右移符号结合性L-R#include template void PrintfBinary(T a) { int i; for (i原创 2015-07-29 16:33:37 · 1543 阅读 · 0 评论 -
C++实现观察者(Observer)模式
观察者(Observer)模式,是常见的模式之一。比如一份报纸,有很多订户。订阅者并不知道报纸何时会送来,他只知道自己订了这份报纸。订阅者在这里担任着观察者的角色,而报社则是被观察者。报纸一旦印刷完毕,就应该及时送到订户手中,如果将报社看作一个对象,则报纸便是观察者(订户)和被观察者(报社)之间的纽带。观察者需要维护一个与报纸相关的变量或函数,在这个具体问题中,这个变量就是订户是否收到报纸,可转载 2015-08-27 22:00:24 · 480 阅读 · 0 评论 -
什么会在main函数之前执行
1、可以定义一个全局对象,这时会调用该类的构造函数。#include #include using namespace std;class A {public: A() { cout << "A construct 1!" << endl; }};static A a;//定义全局对象int main(int argc, char *argv[])原创 2015-08-27 22:34:12 · 1166 阅读 · 0 评论 -
关于类的成员的访问权限的题目
中兴移动2014笔试的一道选择题:下面注释处会导致编译错误的是?class Base{protected:int mltem;private:int mCount;friend class Test;};class Sub:public Base{public:void Test(const Sub &sub,const Base & base)原创 2015-08-27 20:37:18 · 860 阅读 · 0 评论 -
中兴通讯2015笔试应用题
题目1:请用递归算法计算n的阶乘特殊情况当n小于0时,阶乘是没有意义的。当n=0时,阶乘为1。#include using namespace std;long long jiechengcore(long a){ if(a==1) return 1; else return a*jiechengcore(a-1);}long long jiecheng(lo原创 2015-08-28 10:35:20 · 740 阅读 · 0 评论 -
计算循环的次数
#include#include#include#includeusing namespace std;int main(){ srand(time(0)); while(1) { int start = rand()%10;// the start of the loop (included) int end = rand()%10 + 100;//the end of原创 2017-07-15 11:03:31 · 3745 阅读 · 0 评论