C/C++
文章平均质量分 54
Sun_tester
这个作者很懒,什么都没留下…
展开
-
【剑指offer】【九度oj】数组中只出现一次的数字
题目:数组中只出现一次的数字时间限制:1 秒内存限制:32 兆题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。输入:每个测试案例包括两行:第一行包含一个整数n,表示数组大小。2第二行包含n个整数,表示数组元素,元素均为int。输出:对应每个测试案例,输出数组中只出现一次原创 2013-03-08 14:23:38 · 1007 阅读 · 0 评论 -
【剑指offer】【九度oj】数组中的逆序对
时间限制:1 秒内存限制:32 兆题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。输入:每个测试案例包括两行:第一行包含一个整数n,表示数组中的元素个数。其中1 第二行包含n个整数,每个数组均为int类型。输出:对应每个测试案例,输出一个整数,表示数组中的逆序对原创 2013-03-02 16:07:24 · 1145 阅读 · 0 评论 -
【剑指offer】【九度oj】整数中1出现的次数
题目16:整数中1出现的次数时间限制:1 秒内存限制:32 兆特殊判题:否题目描述:亲们!!我们的外国友人YZ这几天总是睡不好,初中奥数里有一个题目一直困扰着他,特此他向JOBDU发来求助信,希望亲们能帮帮他。问题是:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、1原创 2013-03-21 17:36:51 · 1725 阅读 · 0 评论 -
腾讯编程马拉松初赛第五场 - 第一题(威威猫系列故事——吃鸡腿)
Problem Description 威威猫不是一只普通的猫,普通的猫喜欢吃鱼,但威威猫最喜欢吃鸡腿。他每天都在不停的吃啊吃,吃了一只又一只鸡腿。现在他遇到了一个难题,如果他的体重太胖那么他的主人就不给他吃鸡腿了,所以他需要你的帮助。 威威猫的身体由n个器官构成,由于他的身体很特殊所以他的增长也很特殊(不要问为什么,喜欢吃鸡腿的猫已经够奇怪了)。他的增长有个k1和k2系数,而且每原创 2013-03-26 14:00:11 · 1480 阅读 · 0 评论 -
C语言中结构体中变量存储的对齐问题
在C语言中,结构体中变量的声明顺序不同会导致所占字节不同。例如,struct { short x; long y; char z;}A;上述结构体所占字节为12。struct { short x; char y; long z; }B;而此结构体所占字节为8。原因是编译器会存在对齐问题。在第一个结构体A中,x占2个字节,但原创 2013-04-19 22:51:35 · 1640 阅读 · 2 评论 -
C语言数组中的地址偏移问题
本文讨论在C/C++中,一维数组和二维数组中的地址偏移问题。一维数组 int a[3];二维数组 int a[3][3];1、先看一维数组的情况:#include using namespace std;int main(){ int a[3] = {1,2,3}; cout << &a << endl; cout << a << endl; cout原创 2013-06-24 15:04:48 · 6880 阅读 · 6 评论 -
C++ 虚函数表解析
转自:http://blog.csdn.net/haoel/article/details/1948051/C++ 虚函数表解析 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使转载 2013-06-27 22:29:38 · 897 阅读 · 0 评论 -
Manacher's ALGORITHM: O(n)时间求字符串的最长回文子串
转自:http://www.felix021.com/blog/read.php?2040这个算法看了三天,终于理解了,在这里记录一下自己的思路,免得以后忘了又要想很久- -.首先用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插入一个特殊的符号。比如 abba 变成 #a#b#b#a#, aba变成 #a#b#a#。 为了进一步转载 2013-08-02 12:08:09 · 981 阅读 · 0 评论 -
C++中虚析构函数的作用(转载)
转自:http://blog.csdn.net/starlee/article/details/619827 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~转载 2013-08-18 16:48:30 · 789 阅读 · 0 评论 -
2014百度笔试题
算法题:给出一个数据A=[a_0, a_1, a-2, ... a_n](其中n可变),打印出该数值元素的所有组合。注:此题要求输出的是所有的组合,并非所有排列。思路:数组中的每一个数对应一个标志位,将标志位数组中的每个元素看成是一个只能为0或1的元素,将这个标志位数组从1循环到2^n - 1,每次迭代加1,迭代过程中输出此时标志位为1的对应元素。代码如下:#include原创 2013-10-14 16:41:23 · 1436 阅读 · 2 评论 -
【剑指offer】【九度oj】字符串的排序
题目地址:http://ac.jobdu.com/problem.php?cid=1039&pid=11字符串的排序时间限制:1 秒 内存限制:32 兆题目描述:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入:每个测原创 2013-02-23 12:22:45 · 1266 阅读 · 0 评论 -
【剑指offer】【九度oj】栈的压入压出
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。输入:每个测试案例包括3行:第一行为1个整数n(1第二行包含n个整数,表示栈的压入顺序。第三行包含原创 2013-02-22 15:27:44 · 937 阅读 · 0 评论 -
C语言异或操作的妙用
如果想要交换2个变量,一般的做法是引入第三个变量,例如, temp = a; a = b; b= temp;这样2个变量中的值就实现了交换。那能不能不引入其他变量就可以实现变量值的交换呢?答案是肯定的。用异或操作可以实现,有2种实现方法,本质上是一样的。法1:#include int main(){ in原创 2011-11-29 14:15:36 · 6523 阅读 · 0 评论 -
HDOJ 1063 && POJ 1001
HDOJ1063和POJ1001是相同的题目,但是就此题而言,POJ的数据要弱于HDOJ。此题是高精度幂运算,在POJ上能AC的代码却在HDOJ上AC不了,后来仔细阅读题目才发现,程序中没有处理前导0的部分,就是说001.01得处理为1.01。经过实际测试,加上处理前导0的功能,既可以在HDOJ上AC,也可以在POJ上AC;如果不加处理前导0的功能,只能在POJ上AC。这就是许多像我一样的原创 2011-07-05 13:55:00 · 872 阅读 · 0 评论 -
关于C语言函数返回二维数组的做法
在C语言中,有时我们需要函数的返回值为一个二维数组。这样外部函数接收到这个返回值之后,可以把接收到的二维数组当成矩阵操作(外部函数不可用普通的一级指针接收返回值,这样的话,外部函数将不知道它具有二维性)。方法如下:法1.没有使用typedef类型定义#include int (*fun(int b[][2]))[2]{ return b;}int main(){ int原创 2011-11-07 21:36:16 · 9503 阅读 · 2 评论 -
HDU 4146 Flip game
Flip GameTime Limit: 15000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Problem DescriptionFlip game is played on a square N*N field with two-sided pieces placed on原创 2012-02-09 16:47:11 · 2244 阅读 · 0 评论 -
关于C/C++左值的一些问题
在标准C++中,++i可以作为左值,i++不能作为左值。1.++i相当于i自身增1,然后返回i的引用,i是普通变量,所有可以作为左值。 ++i实现 i = i + 1; return i;2.i++相当于将i赋值给编译器产生的临时变量,然后i自身增1,返回临时变量。由于临时变量不能作为左值,故i++不能为左值。 i++实现 int temp; te原创 2012-07-24 23:04:04 · 1864 阅读 · 0 评论 -
你真的了解while(n--)吗?
下面这段代码我们都很熟悉#include int main(){ int n=5; while(n) { n=n-1; } printf("%d\n",n); return 0;}它的输出结果为0.再看下面这一段代码:#include int main(){ int n=5; while(n--) { ; } printf("%d\n原创 2012-02-10 21:34:18 · 7865 阅读 · 4 评论 -
浅析字符常量区
以下程序编译环境为gcc1.#include #include int main(){ char* s1 = "Hello"; s1[0] = 'z'; printf("%s\n",s1); return 0; }编译不会出错,但运行错误Segmentation fault。因为字符串"Hello"在字符常量区,指针s1指向字符常量区,字符常量区原创 2012-07-25 22:57:56 · 2395 阅读 · 2 评论 -
C/C++中指针的“ ++ 与 * “的故事
前面写过一篇关于C/C++左值的文章(http://blog.csdn.net/love_cppandc/article/details/7782606),那篇文章里提到过i++与++i的区别,但是只是在i为整型时的一些情况。现在,我们讨论一下当指针++与*混用的一些情况。1. (i) char *ptr = "Hello"; printf("%c",*p原创 2012-09-07 17:06:07 · 1346 阅读 · 0 评论 -
悬挂else引发的问题
请看下面这段代码:#include int main(){ int x,y; x = 0; y = 1; if(x == 0) if(y == 0) printf("x == 0 && y == 0\n"); else printf("x!=0\n"); return 0;}程序的本意是:若x==0,则进行判断y是否等于0;若x!=0,则输出x!=0原创 2012-09-22 17:20:08 · 1804 阅读 · 2 评论 -
链表的建立、输出、非递归反转、递归反转
链表的建立、输出、非递归反转、递归反转代码如下:#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int MAX =原创 2013-10-20 15:37:43 · 1534 阅读 · 1 评论