自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (5)
  • 收藏
  • 关注

原创 浮点数到底能不能用 == 进行比较

今天看c语言,遇到一个问题,浮点类型能不能用 == 进行比较,其实这个问题以前也碰到过,在面试的时候,只知道尽量不要使用 == 对浮点数进行比较。那么为什么呢,计算机中的计算不是确定的么?首先我们要了解浮点数在计算机中怎么存放的。《深入理解计算机系统》中这样说过,浮点数普遍的作为实数运算的近似值的计算,是很有用的。这里说的是实数的近似值的计算,所以浮点数在计算机中其实是一种不精确的表示。它存在

2013-02-25 11:46:30 10538

原创 把c语言中的声明用程序翻译成通俗的语言

理解c语言的优先级规则:A 声明从它的名字开始读取,然后按照优先级次序一次读取B优先级从高到底依次是:b1  声明中被括号括起来的那部分b2 后缀操作符      括号()表示这是一个函数,而方括号【】表示这是一个数组b3 前缀操作符,星号*表示“指向。。。的指针”C 如果const(或volatile)关键字的后面紧跟类型说明符(如int,long等),那

2012-04-11 19:59:01 2848

原创 模拟实现c语言中的动态内存分配malloc函数

动态存储器分配器维护着一个进程的虚拟的存储器区域,称为堆(heap)。分配器将堆视为一组不同大小的块的集合来维护。每个块就是一个连续的虚拟存储器片(chunk),要么是已经分配的,要么是空闲的。我们这里把内存堆空间模拟为一个字节数组buf[1000],块的数据结构为:typedef struct HeadStruct{     size_t size;     void *buf;

2012-02-28 21:28:08 5325 1

转载 状态机的c语言编程

一 有限状态机的实现方式有限状态机(Finite State Machine或者Finite State Automata)是软件领域中一种重要的工具,很多东西的模型实际上就是有限状态机。FSM的实现方式:1) switch/case或者if/else这无意是最直观的方式,使用一堆条件判断,会编程的人都可以做到,对简单小巧的状态机来说最合适,但是毫无疑问,这样的方式比较原始,对

2012-02-22 11:09:54 11182

原创 状态机解决有关删除程序中的注释的问题

最近几天看程序员面试宝典,有一个面试题:编写程序去掉c,c++中的注释。要按照常规的方法,分析几种情况,会很麻烦,于是上网看看有么有更好的解决方法。  可以用状态机解决这种情况很多的分支问题。(关于状态机的详细知识,会转载令一篇博客。)  以下是自己分析的这个题的状态:            状态\输入/*“\'回车其它01

2012-02-22 11:06:16 1762 1

转载 二维数组动态分配和释放 [转]

(1)已知第二维Code-1char (*a)[N];//指向数组的指针a = (char (*)[N])malloc(sizeof(char *) * m);printf("%d\n", sizeof(a));//4,指针printf("%d\n", sizeof(a[0]));//N,一维数组free(a);(2)已知第一维

2012-01-06 11:01:51 589

原创 关于printf函数及变参数函数实现

printf函数一直都是一个很强大的函数,它的变参数是怎么实现的?一直是一个困扰我的问题。经过查找资料,了解了这是一类c语言通用的问题:变参数函数的实现。   要实现这种机制,必须要现了解4个宏定义:va_list, va_start, va_arg, va_end。下面给出这四个宏定义在c语言中的实现:                在解释这几个宏定义之前先要了解一下可边参数函数

2011-12-27 09:14:50 656

原创 烙饼排序

星期五的晚上,一帮同事在希格玛大厦附近的“硬盘酒吧”多喝了几杯。程序员多喝了几杯之后谈什么呢?自然是算法问题。有个同事说:“我以前在餐馆打工,顾客经常点非常多的烙饼。店里的饼大小不一,我习惯在到达顾客饭桌前,把一摞饼按照大小次序摆好——小的在上面,大的在下面。由于我一只手托着盘子

2011-08-31 22:20:01 1033

转载 调色板的原理

PC机上显示的图象是由一个个像素组成的,每个像素都有自己的颜色属性。在PC的显示系统中,像素的颜色是基于RGB模型的,每一个像素的颜色由红(B)、绿(G)、蓝(B)三原色组合而成。每种原色用8位表示,这样一个的颜色就是24位的。以此推算,PC的SVGA适配器可以同时显示224约一

2011-07-26 10:54:55 694

转载 DDB与DIB的区别2

依赖于设备的位图(DDB)DDB(Device-dependent bitmap)依赖于具体设备,这主要体现在以下两个方面:DDB的颜色模式必需与输出设备相一致。例如,如果当前的显示设备是256色模式,那么DDB必然也是256色的,即一个像素用一个字节表示。在256色以下的位图中

2011-07-25 11:18:04 1474

转载 DDB与DIB的区别1

DDB与DIB的区别(转载)DDB与DIB的区别(转载):DDB(设备相关位图)DDB依赖于具体设备:DDB的颜色模式必需与输出设备相一致。例如,如果当前的显示设备是256色模式,那么DDB必然也是256色的。在256色以下的位图中存储的像素值是系统调色板的索引,其颜色依赖于系统

2011-07-25 11:16:39 1222

原创 C++流及文件的操作

C++中把数据之间的传输操作叫做“流”。在C++中流既可以表示数据从内存传到某个载体或输出设备中,即“输出流”,也可以表示数据从载体或输入设备传到内存中的变量中,叫“输入流”。       在C++中数据的输入和输出包括三种方式:         1  对标准输入设备键盘和标准输

2011-07-24 10:38:14 1874

转载 句柄与指针的联系与区别

句柄是一个32位的整数,实际上是windows在内存中维护的一个对象(窗口等)内存物理地址列表的整数索引。因为windows的内存管理经常会将当前空闲对象的内存释放掉,当需要时访问再重新提交到物理存储,所以对象的物理地址是变化的,不允许程序直接通过物理地址来访问对象。程序将想访问

2011-07-24 10:27:12 467

原创 动态规划解0-1背包问题

<br />   0-1背包问题:给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量是W,问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大?(每个物品有两种情况,装入背包或者不装入背包)。<br />   0-1背包问题可以用动态规划来解决。它满足动态规划的两个条件:最优子结构和重叠子问题。(证明见《计算机算法设计与分析》p77)。解动态规划问题时关键是问题的表示和递归关系的生成。能把问题完美的表示出来并且证明了此问题满足最优子结构,那么这个问题就解决了一半。<br />   0

2011-05-12 10:53:00 1545

原创 堆排序

<br />堆是一种重要的数据结构,二叉堆是一颗完全二叉树。可以用数组存放二叉堆,每个节点与数组中的存放位置对应。<br /> <br />这里的堆排序算法是一种应用最大堆的原地排序算法(原地排序就是指不申请多余的空间来进行的排序),效率为O(nlgn)。<br /> <br />Max_Heapify(int a[],int anum,int i)是建立堆的子程序,即假设i的左孩子和右孩子均满足最大堆的性质,但是i不满足,此子程序就是通过将i “float down”来维持最大堆的性质。<br /> <b

2011-04-28 09:48:00 379

原创 July 微软面试100题 第18题 约瑟夫环

<br />题目:n个数字(0,1,2,........,n-1)形成一个圆圈,从数字0开始,每次从圆圈中删除第m个数字(第一个为当前 数字本身,第二个为当前数字的下一个数字)当一个数字删除 以后,从被删除的下一个继续删除第m个数字,求出这个圆圈中的最后一个数字。<br /> <br /> <br /> <br /> <br />约瑟夫环问题,本科刚开始学习数据结构时的一个课程设计,考察的是对链表的操作<br />只要仔细的分析好指针操作就可以完成。<br />程序清单:<br /> <br />#incl

2011-04-26 17:28:00 628

原创 July 微软面试100题 第17题 字符串中第一个只出现一次的字符

<br />在一个字符串中找到第一个只出现一次的字符,如输入abaccdeff,则输出b<br /><br /> <br /> <br />我的刚开始的想法是对于每一个字符来说,遍历整个字符串,检查它出现的次数,直到找到仅有一次出现的字符,显然,这个算法的时间复杂度是O(n2)的。JULY用的是hash表实现的,由于字符(char)是一个长度为8的数据类型,因此总共有可能256 种可能。于是我们创建一个长度为256的数组,每个字母根据其ASCII码值作为数组的下标对应数组的对应项,而数组中存储的是每个字符对

2011-04-26 15:09:00 503

原创 July 微软面试100题 第16题 二叉树的层次遍历

<br />输入一颗二叉树,从上往下按层次打印树的每个节点,同一层中按照从左往右的顺序打印。<br /> <br /> <br /> <br />二叉树的层次遍历,用队列非常容易实现。<br />这里用的是链队列。<br />程序清单如下:<br />#include <iostream.h>#include <malloc.h>typedef struct TNode{ int data; struct TNode *lchild; struct TNode *rchild;}

2011-04-25 21:42:00 634

原创 Video Game Design

Professor Cloud has been consulting in the design of the most anticipated game of theyear: Takehome Fantasy XII. One of the levels in the game is a maze that playersmust navigate through multiple rooms from an entrance to an exit. Each room can beempty, co

2011-04-24 16:18:00 1017

原创 Manhattan skyline problem

<br />老师给的一道算法作业题,要求O(nlgn)实现,题目如下:<br /> <br /> <br />Suppose that you are given the exact locations and shapes of several rectangular<br />buildings in a city, and you wish to draw the skyline (in two dimensions) of these<br />buildings, eliminating hidd

2011-04-24 16:06:00 3239 1

原创 July 微软面试100题 第13题

输入一个单向链表,输出该链表中倒数第k个节点分析:本质是单链表的倒置#include #include typedef struct ListNode{ int data; ListNode *next;}*List;List InitList(){ int num; int data; List head=(List)malloc(sizeof(ListNode)); head->next=NULL; List p=head; cout>num;

2011-04-06 14:59:00 605

原创 bmp图像的直方图均衡化

<br />#include <windows.h>#include <stdio.h>unsigned char *pBmpBuf;//读入图像的数据指针int bmpWidth;//图像的宽int bmpHeight;//图像的高RGBQUAD *pColorTable;//颜色表指针int biBitCount;//图像类型,每像素的位数bool readBmp(char *bmpName){ //二进制方式打开 FILE *fp=fopen(bmpName

2011-04-06 10:30:00 2921

原创 July 微软面试100题 第11题 求二叉树的最大距离

<br /> 求二叉树中节点的最大距离 <br />如果我们把二叉树看成是一个图,父子节点之间的连线是双向的。我们姑且定义“距离”为两个节点之间的边的个数。<br />写一个程序。<br />求一棵二叉树中相距最远的两个节点之间的距离。<br /> ////////////////////////////////////////////////////////<br />一棵二叉树中节点的最大距离只有两种情况,经过根节点和不经过根节点。<br />所以可以用递归的方法来求解。<br />程序如下:<br /

2011-04-01 16:32:00 521

原创 July 微软面试100题 第十题自己的思路

<br />用两个栈相互入栈出栈。达到输出字符的目的,代码如下:<br />#include <iostream.h><br />#include <stdio.h><br />#include <malloc.h><br />//用两个栈处理字符串,通过出栈入栈输出字符串<br />typedef struct Stack<br />{<br /> char a[256];<br /> int top;<br /> int base;<br /> int size;<br />}*sqstack;<br

2011-03-31 08:58:00 975 1

shell 脚本编程指南

shell编程的基础。学习shell编程的入门教程。

2012-04-09

单链表二叉树算法大全

非常齐全的单链表和二叉树算法大全,全都是在历年笔试时最容易考察的经典知识点。

2011-10-24

程序员面试题集锦

一些程序员面试的时候的问题一些程序员面试的时候的问题

2011-10-24

一些关于象棋游戏设计的资料(有源码)

非常齐全的象棋设计材料,包括算法的设计和源代码。还有中国象棋计算机博弈的现状和未来

2011-10-23

The C Programming language(双语版)

The C Programming language(双语版)

2010-05-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除