03 2014 档案

摘要:1.题目描述描述: 已知2条地铁线路,其中A为环线,B为东西向线路,线路都是双向的。经过的站点名分别如下,两条线交叉的换乘点用T1、T2表示。编写程序,任意输入两个站点名称,输出乘坐地铁最少需要经过的车站数量(含输入的起点和终点,换乘站点只计算一次)。 地铁线A(环线)经过车站:A1 A2 A3 A4 A5 A6 A7 A8 A9 T1 A10 A11 A12 A13 T2 A14 A15 A16 A17 A18 地铁线B(直线)经过车站:B1 B2 B3 B4 B5 T1 B6 B7 B8 B9 B10 T2 B11 B12 B13 B14 B15输入: 输入两个不同的站名 输出: 输出最少 阅读全文
posted @ 2014-03-19 16:39 无缰之马 阅读(525) 评论(0) 推荐(0) 编辑
摘要:1.问题的提出 在没有了解vector之前,动态数组一般都是又new创建的。在了解vector后发现vector竟是那样方便好用,但方便的同时却是以牺牲执行效率为代价的。网上对vector和array的评价和吐槽,也是喜忧参半,各有不同啊。在面临选择的时候,我们到底用哪一种呢,我们可能都犹豫过?下面对该问题进行理论分析和实际测试验证。2.理论分析2.1预备知识-程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。是一种线性结构,其操作方式类似于数据结构中的栈,操作速度较快。但程序员是... 阅读全文
posted @ 2014-03-15 14:57 无缰之马 阅读(8026) 评论(2) 推荐(1) 编辑
摘要:原文:求递归算法时间复杂度:递归树 另外见地址2递归算法时间复杂度的计算方程式一个递归方程: 在引入递归树之前可以考虑一个例子: T(n) = 2T(n/2) + n2 迭代2次可以得: T(n) = n2 + 2(2T(n/4) + (n/2) 2) 还可以继续迭代,将其完全展开可得: T(n) = n2 + 2((n/2) 2 + 2((n/22)2 + 2((n/23) 2 + 2((n/24) 2+…+2((n/2i) 2 + 2T(n/2i + 1)))…)))) ……(1) 而当n/2i+1 == 1时,迭代结束。 将(1)式小括号展开,可得: T(n) ... 阅读全文
posted @ 2014-03-13 21:17 无缰之马 阅读(239) 评论(0) 推荐(0) 编辑
摘要:1.题目 编写两个任意位数的大数相乘的程序,给出计算结果。2.题目分析 该题相继被ACM、华为、腾讯等选作笔试、面试题,笔者2014年替师兄去腾讯笔试就遇到此题,当然若无准备要写出这种程序,还是要花一定的时间的。故,觉得有必要深入研究一下。搜索了网上的大多数该类程序和算法,发现,大数乘法主要有模拟手工计算的普通大数乘法,分治算法和FFT算法。其中普通大数乘法占据了90%以上,其优点是空间复杂度低,实现简单,时间复杂度为O(N²),分治算法虽然时间复杂度降低为, 但其实现需要配 合字符串模拟加减法操作,实现较为复杂, 参考博客1http://cnn237111.blog.51cto.. 阅读全文
posted @ 2014-03-13 16:14 无缰之马 阅读(238) 评论(0) 推荐(0) 编辑
摘要:1、二叉树遍历分析 二叉树的遍历有四种,先序、中序、后序和层序,其中,中序遍历配合其中任何一种遍历的结果都可以重建二叉树,先序和后序配合却无法重建二叉树。本人觉得编程之美书上代码清单3-12给出的代码不一定是最好的,代码冗长,复杂。在此给出自己的尝试和结果。2、先序+中序重建二叉树 先给出一个子函数,检验字符search_char是否在字符串*s的区间[pbeg, pend],也是是否能构建二叉树的判断依据。代码如下:bool charisexist(char search_char,char *s,int pbeg,int pend,int &loc){ string temp=s; 阅读全文
posted @ 2014-03-13 13:44 无缰之马 阅读(195) 评论(0) 推荐(0) 编辑
摘要:1.问题定义 给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。 要求遍历输出的结果分别为图2,图3和图4,其中图3和图4是扩展问题。 图1 图2 图3 图42.原问题 编程之美书上,采用的是容器构成的数组来实现的,相比于递归算法,时间复杂度大大降低,仅为O(n),但其空间复杂度并非最优。此处采用STL中的Queue来解决此问题,代码如下:节点数据:struct node{ char value; node* pleft; node* pright;};实现代码:queue Queue3;//-... 阅读全文
posted @ 2014-03-05 20:14 无缰之马 阅读(160) 评论(0) 推荐(0) 编辑