
C/C++
文章平均质量分 88
hackbuteer1
这个作者很懒,什么都没留下…
展开
-
vi常用命令集锦
歌曲管理系统---实现读、写文件中的歌曲信息、浏览、排序、查找、删除歌曲等功能。#include "stdio.h"#include "stdlib.h"#include "malloc.h"#include "string.h"int i=0;struct song /*结构体数组*/{ char writer[20]; char singer[20];原创 2011-06-29 16:19:00 · 3708 阅读 · 0 评论 -
程序员面试100题之八:不要被阶乘吓倒(二进制表示中最低位1的位置 )
阶乘(Factorial)是个很有意思的函数,但是不少人都比较怕它,我们来看看两个与阶乘相关的问题: 1、 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。2、求N!的二进制表示中最低位1的位置。 有些人碰到这样的题目会想:是不是要完整计算出N!的值?如果溢出怎么办?事实上,如果我们从"哪些数相乘能得到1原创 2011-08-15 22:34:20 · 11455 阅读 · 5 评论 -
程序员面试100题之九:求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。 如果不考虑时间复杂度,我们可以枚举出所有子数组并求出他们原创 2011-08-17 10:59:50 · 14194 阅读 · 6 评论 -
构造函数的初始化列表
首先,运行下图中的C++代码,输出是什么?class A{private: int n1; int n2;public: A(): n2(0) , n1(n2 + 2) { } void Print() { cout<<"n1:"<<n1<<",n2:"<<n2<<endl; }};int main(void){ A a; a.Print(); retur原创 2011-06-15 12:51:00 · 4989 阅读 · 1 评论 -
程序员面试100题之二:跳台阶问题(变态跳台阶)
题目1:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。分析:这道题最近经常出现,包括MicroStrategy等比较重视算法的公司都曾先后选用过个这道题作为面试题或者笔试题。首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。现在我们原创 2011-08-14 21:22:01 · 19325 阅读 · 4 评论 -
单链表的快速排序
单链表的快排序和数组的快排序基本思想相同,同样是基于划分,但是又有很大的不同:单链表不支持基于下标的访问。故书中把待排序的链表拆分为2个子链表。为了简单起见,选择链表的第一个节点作为基准,然后进行比较,比基准小得节点放入左面的子链表,比基准大的放入右边的子链表。在对待排序链表扫描一遍之后,左边子链表的节点值都小于基准的值,右边子链表的值都大于基准的值,然后把基准插入到链表中,并作为连接两个子链表的原创 2011-08-07 10:53:48 · 14446 阅读 · 7 评论 -
七种方式求斐波那契(Fibonacci)数列通项
一:递归实现 使用公式f[n]=f[n-1]+f[n-2],依次递归计算,递归结束条件是f[1]=1,f[2]=1。二:数组实现 空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快。三:vector实现 时间复杂度是0(n),时间复杂度是0(1),就是不知道vector的效率高不高,当然vector有自己的属性会占用资源。四:queue实现 当然原创 2011-08-13 20:29:59 · 9682 阅读 · 1 评论 -
程序员面试100题之三:不用+、-、×、÷数字运算符做加法
题目:写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。 分析:这又是一道考察发散思维的很有意思的题目。当我们习以为常的东西被限制使用的时候,如何突破常规去思考,就是解决这个问题的关键所在。 看到的这个题目,我的第一反应是傻眼了,四则运算都不能用,那还能用什么啊?可是问题总是要解决的,只能打开思路去思考各种可能性。首先我们可以分析人们是如何做十转载 2011-08-14 21:31:20 · 6189 阅读 · 3 评论 -
程序员面试100题之四:求1+2+...+n
题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。 分析:这道题没有多少实际意义,因为在软件开发中不会有这么变态的限制。但这道题却能有效地考查发散思维能力,而发散思维能力能反映出对编程相关技术理解的深刻程度。 通常求1+2+…+n 除了用公式n(n+1)/2之外,无外乎循环原创 2011-08-14 21:56:24 · 6278 阅读 · 2 评论 -
快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!
将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。 如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。 最快速的方法: (number & number - 1) ==原创 2011-08-12 11:13:10 · 45706 阅读 · 22 评论 -
POJ 2312 Battle City 优先队列+BFS
相信坦克大战大家都玩过吧,本题就是根据这个游戏设计的。坦克要从起点(Y),到目的地(T),坦克不能通过钢墙(S),河(R),可以在空地在行走(E),射击破坏砖墙(B),射击砖墙时不行走且花费一个单位的时间,在空地上行走时也花费一个单位的时间。求坦克从起点到目的地最少花多少时间,不原创 2011-08-25 22:40:34 · 5422 阅读 · 1 评论 -
程序在内存中的分布
在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。从转载 2011-09-18 11:03:26 · 13698 阅读 · 3 评论 -
程序员面试100题之五:二叉树两个结点的最低共同父结点
题目:二叉树的结点定义如下: struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight;}转载 2011-08-14 22:28:48 · 6495 阅读 · 3 评论 -
约瑟夫环的数学优化方法
首先,约瑟夫环的数学优化方法为: 为了讨论方便,先把问题稍微改变一下,并不影响原意:问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。 我们知道第一个人(编号一定是(m-1)%n)原创 2011-08-14 16:04:40 · 11064 阅读 · 4 评论 -
快速排序、希尔排序、插入排序、选择排序、归并排序、堆排序总结
一、快速排序的基本思想 设当前待排序的无序区为R[low..high],利用分治法可将快速排序的基本思想描述为:①分解: 在R[low..high]中任选一个记录作为基准(Pivot),以此基准将当前无序区划分为左、右两个较小的子区间R[low..pivotpos-1)和R[pivotpos+1..high],并使左边子区间中所有记录的关键字均小于等于基准记录(不妨记原创 2011-06-26 19:32:00 · 19449 阅读 · 3 评论 -
四道面试题
1、给定一个N个整数元素的数组,元素分别为A1, A2, A3....AN,每个元素分别对应一个权重W1(小于1的float), W2,W3....WN,其和为1,找出其中一个元素Ak,使所有小于Ak的元素的权重之和小于1/2,所有大于Ak的元素的权重之和>=1/2。 思路:首先将该数组按元素值的大小进行升序排列,同样的那个权值数组也要对应的进行排序,因为原先的那个数组的下标和权原创 2011-08-13 21:24:51 · 5022 阅读 · 4 评论 -
程序员面试100题之一:对称字符串的最大长度
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。要判断一个字符串是不是对称的,不是一件很难的事情。我们可以先得到字符串首尾两个字符,判断是不是相等。如果不相等,那该字符串肯定不是对称的。否则我们接着转载 2011-08-14 16:55:50 · 20631 阅读 · 1 评论 -
链表类面试题
1、清空链表跟销毁链表的区别链表本身是一个数据结构,清空是把链表中的元素清空,但链表还存在,销毁则是把链表这个结构的内存都释放了。。清空是链表没节点,但是链表还在,可以继续插入节点。销毁就是链表没了,整个链表的空间都被释放了,不能进行任何操作了。就像一个杯子,把杯子里的水倒掉叫清空,把杯子砸碎叫销毁。。清空链表与销毁链表的代码如下:#include "stdlib.h"#原创 2011-07-10 16:09:21 · 5814 阅读 · 3 评论 -
strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数
今天kinect终于买到手了,从官方网站下载SDK驱动,装完后,运行样例程序SkeletalViewer,总是提示NuiInitialize error,郁闷了很久,终于解决了。 网上搜了一下,发现大家很多人都遇到了这种情况,今天我就来总结一下。。原创 2011-08-02 20:24:51 · 4379 阅读 · 0 评论 -
XP或Win7系统下grub4dos安装双系统ubuntu(32或64)
编写自定义函数:建立一个带有头结点head的有20个结点的链表,20个结点所需数值由随机数产生。编写自定义函数:建立两个链表,把存有数据的链表中的偶数存入一个链表,奇数存入另一个链表中。编写主函数调用上述两个函数并可输出三个链表中的数据。完整的代码如下:#include "iostream"using namespace std;#include "time.h"struct原创 2011-06-27 12:22:00 · 4821 阅读 · 0 评论 -
2011---2013年杭电计算机历年研究生复试---笔试编程
k个男生和k个女生站成一列,前面k个是男生,后面k个是女生,从第一个男生开始报数,报到队列最后一个同学,循环到队首继续报,并且如果一个同学报到的数是m,这个同学就出列,然后后面的同学继续从1开始报数,现在求一个数m,使k个女生全部出列,而男生没有出列。 输入:原创 2011-08-11 14:30:40 · 7537 阅读 · 0 评论 -
HDOJ 1443 约瑟夫环的最新应用
贪心方法:总是对当前的问题作最好的选择,也就是局部寻优。最后得到整体最优。应用:1:该问题可以通过“局部寻优”逐步过渡到“整体最优”,这是贪心选择性质与“动态规划”的主要差别。2:最优子结构性质:某个问题的整体最优解包含了“子”问题的最优解。完整的代码如下:#in原创 2011-08-03 20:02:11 · 4001 阅读 · 0 评论 -
2010年杭电计算机研究生复试---笔试编程
sprintf 将字串格式化。 头文件 #include 语法: int sprintf(string format, mixed [args]...); 返回值:字符串长度(strlen) 1. 处理字符方向。-负号时表时从后向前处理。原创 2011-08-07 18:04:05 · 5583 阅读 · 0 评论 -
2006---2009年杭电计算机历年研究生复试---笔试编程
strtol()函数的原型为:long int strtol(const char *nptr,char **endptr,int base);函数的解释说明 这个函数会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数ba原创 2011-08-07 15:52:34 · 9000 阅读 · 0 评论 -
Bat命令学习
今天,编译程序的时候,意外遇到了一个错误,就是VS2008一直提示:fatal error LNK1104: 无法打开文件“libc.lib”,后来在网上查找了很多资料,终于知道原因了。。。如果将用低版本的VC开发的项目,拿到高版本的VC开发环境上去编译,链接时也许会触发LN转载 2011-08-02 19:28:55 · 11592 阅读 · 0 评论 -
遍历二叉树的各种操作(非递归遍历)
先使用先序的方法建立一棵二叉树,然后分别使用递归与非递归的方法实现前序、中序、后序遍历二叉树,并使用了两种方法来进行层次遍历二叉树,一种方法就是使用STL中的queue,另外一种方法就是定义了一个数组队列,分别使用了front和rear两个数组的下标来表示入队与出队,还有两个操作就是求二叉树的深度、结点数。。。#include#include#includeusing namespace原创 2011-07-04 17:24:36 · 72286 阅读 · 20 评论 -
用指向指针方法对N个字符串进行排序并输出
C语言版本的:#include "stdio.h"#include "stdlib.h"#include "string.h"void sort(char *str[],int size){ int i,j; char *temp; for(i=0;i<size-1;i++) { for(j=i+1;j<size;j++) { if(st原创 2011-06-27 10:18:00 · 10825 阅读 · 0 评论 -
程序员面试100题之七:最长公共子字符串
子字符串的定义和子串的定义类似,但要求是连续分布在其他字符串中。比如输入两个字符串BDCABA和ABCBDAB的最长公共字符串有BD和AB,它们的长度都是2。 最长公共子字符串共有两种解决方法,下面具体说说我的思路方法一: Longest Commo原创 2011-08-14 22:46:29 · 79900 阅读 · 10 评论 -
程序员面试100题之六:最长公共子序列
题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串。注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中。请编写一个函数,输入两个字符串,求它们的最长公共子串,并打印出最长公共子串。 例如:输入两个字符串原创 2011-08-14 22:44:29 · 30753 阅读 · 7 评论 -
C语言通讯录管理系统
实现了通讯录的录入信息、保存信息、插入、删除、排序、查找、单个显示等功能。。完整的代码如下:#include #include //得到指向大小为Size的内存区域的首字节的指针//#include #include //标准库函数// #define NULL 0#define LEN sizeof(struct txlproject) //计算字节//原创 2011-06-28 19:56:00 · 25213 阅读 · 6 评论 -
数据结构课程设计---------最少换车次数问题
问题描述: 设某城市有n个车站,并有m条公交线路连接这些车站。设这些公交车都是单向的,这n个车站被顺序编号为0~n-1。编号程序,输入该城市的公交线路数,车站个数,以及各公交线路上的各站编号。 实现要求:求得从站0出发乘公交车至站n一1的最少换车次数。原创 2011-08-12 12:55:46 · 7244 阅读 · 0 评论 -
数据结构课程设计---------用栈来实现表达式求值
1、需求分析设计一个程序,演示用算符优先法对算术表达式求值的过程。利用算符优先关系,实现对算术四则混合运算表达式的求值。(1)输入的形式:表达式,例如2*(3+4) 包含的运算符只能有'+' 、'-' 、'*' 、'/' 、'('、 ')';(2)输出的形原创 2011-08-12 21:40:52 · 64337 阅读 · 8 评论 -
快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方! .
将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0; 因此问题可以转化为判断1后面是否跟了偶数个0就可以了。 4的整数次幂的二进制数都为 (4)100、(16)10000、(64)1000000...原创 2011-08-12 11:41:15 · 10175 阅读 · 4 评论 -
数据结构课程设计---魔王语言解释
[问题描述] 有一个魔王总是使用自己的一种非常精练而又抽象的语言讲话,没有人能听得懂,但他的语言是可以逐步解释成人能听懂的语言,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1) α -> β1β2…βm (2)(θδ1δ2…δn)->θδn原创 2011-07-06 17:19:58 · 14544 阅读 · 3 评论 -
课程设计---约瑟夫环
题目:约瑟夫环【问题描述】约瑟夫(Joseph)问题的一种描述是:编号为1,2,.....,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始顺时针方向自1开始报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人都出列为止。试设计一个程序求出列顺序。【其本要原创 2011-07-03 09:47:26 · 3897 阅读 · 0 评论 -
课程设计---停车场管理系统
【要求C或C++编程】设停车场是一个可停放n辆汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在停车场的最北端),若停车场内已停满n辆汽车,则后来的汽车只能在门外的便道上原创 2011-07-04 14:09:47 · 9048 阅读 · 3 评论 -
在VS2008中使用Qt编程
第一步:安装VS2008,我这里安装的是中文版的VS2008并且也没有安装VS2008 SP1,对于VS2008的安装过程这里省略了。 第二步:安装Qt,访问Qt官方网站http://qt.nokia.com/downloads-cn下载2个软件: 1、下载VS2008编译好的QT4.7版本:http://get.qt.nokia.com/qt/source原创 2011-07-01 15:59:00 · 9188 阅读 · 4 评论 -
学生信息管理系统(C语言)
本系统包括以下功能:1、学生信息的整体注册2、学生信息的修改3、学生成绩信息的录入4、学生信息的添加5、恢复误删的学生信息6、学生信息的删除7、密码修改保存函数8、学生信息的查询9、密码修改函数10、学生信息管理系统的菜单函数 #include "stdio.h"#include "malloc.h"#include "string.h"#include "stdlib.h"#原创 2011-07-01 14:37:00 · 6328 阅读 · 2 评论 -
随机生成100万个数,排序后保存在文件中
随机生成100万个数,存储在文件out1.txt中,使用内部排序完成,并重新储存在文件out2.txt中。(一)使用STL中的qsort函数进行操作:#include "stdio.h"#include "string.h"#include "stdlib.h"#include "time.h"int a[1000000];void load(char filename原创 2011-06-29 14:48:00 · 9616 阅读 · 2 评论 -
qsort函数简介
功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 参数:1、待排序数组首地址; 2、数组中待排序元素数量; 3、各元素的占用空间大小; 4、指向函数的指针,用于确定排序的顺序一、比如:对一个长为1000的数组进行原创 2011-06-29 15:16:00 · 4123 阅读 · 0 评论