编程细节
ARLoverKang
这个作者很懒,什么都没留下…
展开
-
c语言中静态数组的定义和初始化
数组可以初始化,即在定义时,使它包含程序马上能使用的值。 例如,下面的代码定义了一个全局数组,并用一组Fibonacci数初始化: int iArray[10]={1,1,2,3,5,8,13,21,34,55); //初始化 void main() { //... } 初始化数组的值的个数不能多于数组元素个数,初始化数组的值也不能转载 2013-09-08 15:12:15 · 3505 阅读 · 0 评论 -
位运算能做什么
1、int变量的奇偶性(变量A) A&1 = 0 (偶数) A&1 = 1 (奇数) 2、int变量第K位的操作。(变量A) (A>>K)&1 (比特位) A=A|(1置位) A=A&~(1清零) 3、两整数的平均值(变量A、B) (A & B) +转载 2013-10-31 09:35:39 · 869 阅读 · 0 评论 -
约瑟夫环问题两解
继续笔试准备ing……分享一下昨天做到的其中一题,其实题目很老,也做过n遍了,但复习起来也是颇有韵味,同时还发现另一种妙解,感觉不错的。 问题描述: 约瑟夫环问题(Josephus) 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。(约瑟夫环问题 Josephus) 解法一(My Solution): 思想转载 2013-10-23 21:04:12 · 905 阅读 · 0 评论 -
战报交流问题分析(gossip problem)
原问题描述 战报交流:战场上不同的位置有N个战士(N>4),每个战士知道当前的一些战况,现在需要这N个战士通过通话交流,互相传达自己知道的战况信息,每次通话,可以让通话的双方知道对方的所有情报,设计算法,使用最少的通话次数,是的战场上的n个士兵知道所有的战况信息,不需要写程序代码,得出最少的通话次数。 解答: 笔试时候想到的是: N-1个人围成一个环转载 2013-10-23 22:07:42 · 1041 阅读 · 0 评论 -
判断两个矩形是否有交集
长方形定义为rect(min,max) min和max是二维点(x,y)组成 两个长方形a(mina, maxa)和b(minb, maxb)的交集c(minc, maxc)满足 minc.x = max(mina.x, minb.x) minc.y = max(mina.y, minb.y) maxc.x = min(maxa.x, maxb.x原创 2013-10-23 10:08:37 · 2280 阅读 · 0 评论 -
给一个正整数N,打印NxN的蛇形矩阵(一) 之空间复杂度O(NxN)
当N=4时,对应的蛇形矩阵如下图: 图 1 将该蛇形矩阵中元素的坐标代替其元素值时,得到如图2的矩阵,此时横坐标i和纵坐标j的和m=i+j具有一定的规律。当m为偶数时,原矩阵(图1中矩阵)中的元素值沿左下方增大,当m为奇数时,原矩阵中的元素值沿右上方增大。 图 2 在了解其规律后不难打印蛇形矩阵中元素,其代码如下: void printSnakeOfN原创 2013-10-22 16:33:41 · 2202 阅读 · 0 评论 -
给一个正整数N,打印NxN的蛇形矩阵(二) 之空间复杂度O(1)
当N=4时,对应的蛇形矩阵如下图: 图 1 将该蛇形矩阵中元素的坐标代替其元素值时,得到如图2的矩阵,此时横坐标i和纵坐标j的和m=i+j具有一定的规律。当m为奇数时,原矩阵(图1中矩阵)中的元素值沿左下方增大,当m为偶数时,原矩阵中的元素值沿右上方增大。 图 2 当m 当m>=N时,可重新将坐标原点定义为右下角(如图3),原创 2013-10-22 22:27:00 · 1652 阅读 · 0 评论 -
数组类面试题
数组是最基本的数据结构,关于数组的面试题也屡见不鲜,本文罗列了一些常见的面试题,仅供参考,如果您有更好的题目或者想法,欢迎留言讨论。目前有以下18道题目,如果有好的题目,随时更新。 数组求和求数组的最大值和最小值求数组的最大值和次大值求数组中出现次数超过一半的元素求数组中元素的最短距离求两个有序数组的共同元素求三个数组的共同元素找出数组中唯一的重复元素找出出现奇数次的元素求数组中满足给定和的转载 2013-10-27 12:11:53 · 1458 阅读 · 0 评论 -
用位运算实现求绝对值
一般情况下,如果要我们写一个求绝对值的函数,我们的实现很有可能会是这样: template T abs_Normal(T tNum) { if(tNum > 0.0) return tNum; else return -tNum; } 也就是说我们会用到一个if-else判断来决定是否反转符号位。在3D游戏软件,或一些对性能要求比较高的底层系原创 2013-10-25 09:20:21 · 3822 阅读 · 0 评论 -
关于i++和++i以及左值,右值
原本一直对i++和++i的区别不是很在意,觉得i++就是先用了i的值(用于赋值之类的操作),再i自加1. 而++i就是把i的值先自加1再用作其他操作. 很多人都问类似于j=++i+++i+i;之类的题目,个人觉得除了有些变态的学校的变态的考试会考.其他根本用不到.如果你在实际写代码的时候这样写,不但是给自己找麻烦,以后代码维护时,你也会被人在心里诅咒很久的...转载 2013-10-09 22:52:40 · 642 阅读 · 1 评论 -
[C++基础]重载、覆盖、多态与函数隐藏(3)
[C++基础]重载、覆盖、多态与函数隐藏 例8-2 #include using namespace std; class Base{ public: virtual void fun(int i){ cout }; class Derive : public Base{ public: void fun(int i){转载 2013-09-11 23:04:38 · 702 阅读 · 0 评论 -
[C++基础]重载、覆盖、多态与函数隐藏(2)
[C++基础]重载、覆盖、多态与函数隐藏 好了,我们先来一个小小的总结重载与覆盖两者之间的特征 重载overload的特征: n 相同的范围(在同一个类中); n 函数名相同参数不同; n virtual 关键字可有可无。 覆盖override是指派生类函数覆盖基类函数,覆盖的特征是: n转载 2013-09-11 23:03:41 · 788 阅读 · 0 评论 -
[C++基础]重载、覆盖、多态与函数隐藏(1)
重载、覆盖、多态与函数隐藏 经常看到C++的一些初学者对于重载、覆盖、多态与函数隐藏的模糊理解。在这里写一点自己的见解,希望能够C++初学者解惑。 要弄清楚重载、覆盖、多态与函数隐藏之间的复杂且微妙关系之前,我们首先要来回顾一下重载覆盖等基本概念。 首先,我们来看一个非常简单的例子,理解一下什么叫函数隐藏hide。 #include using namespace s转载 2013-09-11 23:02:30 · 921 阅读 · 0 评论 -
[C++基础]重载、覆盖、多态与函数隐藏(4)
[C++基础]重载、覆盖、多态与函数隐藏 小结: 重载overload是根据函数的参数列表来选择要调用的函数版本,而多态是根据运行时对象的实际类型来选择要调用的虚virtual函数版本,多态的实现是通过派生类对基类的虚virtual函数进行覆盖override来实现的,若派生类没有对基类的虚virtual函数进行覆盖override的话,则派生类会自动继承基类的虚v转载 2013-09-11 23:06:30 · 835 阅读 · 0 评论 -
C的宏定义实现模板函数——C的C++模板函数机制实现
近日移植TightVNC,关于RectangleUpdate的编码,处理不同色彩位深bits/pixe( 8,16,32)有着极其相似的处理方法,由于C中没有模板函数的概念,因而采用了宏定义来处理,与模板函数有着异曲同工之妙。现摘录分析如下(代码有删节): Rfbproto.c文件中 /* CONCAT2 concatenates its two arguments. CONCAT2转载 2013-12-05 09:56:18 · 3787 阅读 · 0 评论