
C/C++
文章平均质量分 76
劉俊
这个作者很懒,什么都没留下…
展开
-
《C Primer Plus》习题一道---无聊而已
/* ------------------------------------------------------ 程序说明: 程序接收一个二进制字符串,然后程序将其转换成十进投师数字值表示 程序最多可以接收32位。 --------------原创 2011-09-25 01:01:05 · 825 阅读 · 0 评论 -
ACM题目三道--------------一道超时了,两道WA
#include#define N 1000typedef struct{ int iBeg ; int iEnd ; int iSum ;} iMaxQueue ;int main(void){原创 2011-10-07 12:08:27 · 1340 阅读 · 2 评论 -
WinSock 重叠I/O模型
//服务端/*。在程序清单7-8 中,我们向大家展示了如何构建一个简单的服务器应用,令其采用前述的方法,通过完成例程,来实现对一个套接字请求的管理。该程序的编码主要按下述步骤进行:① 新建一个套接字,开始在指定端口上,监听一个进入的连接。② 接受一个进入的连接请求。③ 为接受的套接字创建一个WSAOVERLAPPED 结构。④ 在套接字上投递一个异步转载 2012-02-03 17:43:46 · 1267 阅读 · 0 评论 -
区分给定序列为合法序列
/* ---------------------------------------------------------------------- 假设以S和X分别表示入栈和出栈的操作,则初态和终态均为栈空的入栈和出栈的 操作序列可以表示为公由S和X组成的序列。称可以操作的序列为合法序列 (例如,SXSX为合法序列,SXXS为非法序列)。试给出区分给定序列为合法序列 或者非法序列的原创 2012-04-18 00:34:35 · 1338 阅读 · 0 评论 -
ACM-Giroro的地雷测试(AC,广度优先搜索)
Giroro的地雷测试Time Limit:1000MS Memory Limit:65536KTotal Submit:1 Accepted:0 Description为了早日完成侵略蓝星的使命,Giroro最近新入手了一批地雷。为了测试地雷的可爆性(旁白:有这性质的?),Giroro在一些地方埋下了地雷,并让Tamama射出Tamama冲击波来引爆这些地雷。因为Tamama冲原创 2012-05-02 20:29:14 · 1174 阅读 · 0 评论 -
两个测试程序
本来是想测试一下在多线程环境下printf多次输出的情况,验证一下自己的想法,结果自己的测试程序貌似有问题,测试不出来.....先记下如何创建线程,减少烦人的编译错误先 /* ----------------------------------------------------------------------------------- 这个是用_beginthreadex创建线程原创 2012-05-30 00:35:20 · 577 阅读 · 0 评论 -
ACM-游玩景点(AC,动态规划,最大子序列和问题)
游玩景点Time Limit:1000MS Memory Limit:65536KTotal Submit:182 Accepted:35 DescriptionDieIng五一要去旅游,旅游区的景点道路分布如图:欣赏景点的道路为东西走向,每条道路有DieIng对它的喜爱值;南北走向为林间小道,供休息用。由于五一游客较多,旅游区规定欣赏景点的道路只能单向行走,自东向西原创 2012-05-14 13:37:19 · 1772 阅读 · 0 评论 -
ACM-Baby game of lala(MLE,图,广度优先搜索)
Baby game of lalaTime Limit:1000MS Memory Limit:65536KTotal Submit:200 Accepted:61 DescriptionDo you know teletubbies? They are four cute babies, who names: Dipsy, Po, Lala, and Tinky W原创 2012-06-09 00:07:59 · 860 阅读 · 0 评论 -
ACM-ACMICPC (AC,动态规划/遍历所有字串,三份代码)
ACMICPC Time Limit:1000MS Memory Limit:32768KDescription:大写字母A-Z分别对应整数[-13,12],因此,一个字符串对应了一个整数列。我们把字符串对应的整数列的和称为该字符串的特性值。例如:字符串ACM对应的整数列为{-13,-11,-1},则ACM的特性值为(-13)+(-11)+(-1)=-25;其子串AC的特原创 2012-06-13 23:43:40 · 1028 阅读 · 0 评论 -
ACM-Position Arrangement (解题报告)
Time Limit:1000MS Memory Limit:32768KDescription:一个01串,我们可以对相邻两个字符实行交换位置的操作. 求最少的操作次数使得所有的1的位置连续. eg. s="010110",swap(s[1],s[2])之后,变成"001110". 所以答案是1.Input:多组数据,每组数据一个01字符串.串长不超过10^5O原创 2012-07-04 01:48:37 · 1036 阅读 · 0 评论 -
别人的课程设计:哈夫曼树
#include#include#include#define MAX_Node_num 30typedef struct{ char elem; unsigned int weight; unsigned int parent,lc,rc;}HTNode,*HuffmanTree;typedef char ** HuffmanCod转载 2012-06-23 09:02:01 · 1124 阅读 · 0 评论 -
关于“线程和fork”的一些疑问和猜想
今天在看《Unix环境高级编程》的时候卡在这一章节很久,在这里有比较多不理解的地方,于是想写篇blog来整理一下。 在“线程和fork ”这一章节中提到了这样一个问题:“在子进程内部只存在一个线程,它是由父进程中调用fork的线程的副本构成的。如果父进程中的线程占有锁,子进程同样占有这些锁。问题是子进程并不包含占有锁的线程的副本,所以子进程没有办法知道它占有哪些锁并且需要释放哪些锁原创 2012-07-11 01:01:19 · 783 阅读 · 0 评论 -
可等待的计时器与APC调用
以前第一次看到APC,也就是异步过程调用的时候,没有搞明白这是一个什么样的机制。今天再看一次,然后结合一些简单的测试代码和搜索来的资料,大概明白了是怎么回事。 先来非常简单地描述一下这一个“可等待的计时内核对象”。大概定义如下:可等待的计时器对象是这样一种内核对象,它们会在某个指定的时间触发,或每一段时间触发一次,它们通常用来在某个时间执行一些操作。 相关的API(具体原创 2012-08-02 19:20:04 · 1689 阅读 · 1 评论 -
CreateThread和_beginthreadex
在《Windows核心编程 5th》一书里经常提到一个的建议,那就是:如果写的是C/C++代码,尽量不要用CreateThread来创建线程,而必须调用C/C++运行库函数_beginthreadex。其中的原因摘自书上的原话就是:”标准C/C++运行库不是为多线程应用程序而设计的。”。以全局函数和全局变量为例,在多线程环境中会问题。因为他们是多个线程访问同一个资源,例如调用函数出错后设置err原创 2012-07-28 01:24:45 · 1090 阅读 · 0 评论 -
Windows下的线程终止
Windows下的线程可以通过以下4种方法来终止。1、 线程函数返回。(强烈推荐)2、 线程通过调用ExitThread函数“杀死”自己。(避免使用)3、 同一个进程或另一个进程中的线程调用TerminateThread函数(避免使用)4、 包含线程的进程终止运行(避免使用) 1)、线程函数返回(自然死亡)清理工作包括:C原创 2012-07-28 01:28:22 · 4336 阅读 · 0 评论 -
VC C/C++ 4种方法获取文件大小 Windows API
#include #include #include #include using namespace std;void main(){ char *filepath = "C:\\1.txt"; //方法一 HANDLE handle = CreateFile(filepath, FILE_READ_EA, FILE_SHARE_转载 2012-08-29 16:28:29 · 20940 阅读 · 0 评论 -
VC++文件操作函数解析
ftell:功 能:返回当前文件位置,也就是说返回FILE指针当前位置。 函数原型: long ftell(FILE *stream); 函数功能:函数 ftell() 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。使用fseek函数转载 2012-08-29 16:50:08 · 3321 阅读 · 0 评论 -
当一个窗口关闭时WM_CLOSE,WM_DESTROY,WM_QUIT
一般是响应WM_CLOSE,调用DestroyWindow()DestroyWindow()又发送WM_DESTROY响应WM_DESTROY,调用WM_QUITGetMessage()发现WM_QUIT,退出程序 有三个消息看起来差不多,都是处理关闭的事情的,它们是WM_CLOSE,WM_DESTROY,和WM_QUIT。它们的确很相似,但你需要知道它们之间的不同!一个窗口或转载 2012-08-22 11:02:41 · 1956 阅读 · 0 评论 -
用Win32 SDK & C++实现的一个简易版局域网聊天软件
效果图: 程序简要说明:程序名称:简易局域网聊天工具 开发方式:Win32 SDK 、C++开发环境:Visual C++ 6.0功能: 支持一对一聊天、传送、接收文件,支持群聊,实时好友列表,简陋的消息提示。缺点:用户界面不友好,排错功能较差,一个IP地址只能对应一个程序实例。 程序框架的来源:在局域网实现一个聊天工具,主要需要解决的是原创 2012-09-06 00:26:43 · 4598 阅读 · 4 评论 -
execvp调用失败,错误信息"Bad address"的原因
测试程序:#include#include#include#define MAXFILES 10int main(int ac,char **av){ int i = 0 ; char *pszSort = "sort" ; char *sortav[MAXFILES] ; if(ac < 2) { fprintf(stdout,"Must input the原创 2012-09-16 23:46:40 · 5386 阅读 · 0 评论 -
快速排序
快速排序:基本原理:快速排序也是基于分治模式的。 分治过程的三个步骤:分解:数组A[p...r]被划分成两个(可能空)子数组A[p..q-1]和A[q+1...r],使得A[p..q-1]中的每个元素都小于等于A(q),而且,小于等于A[q+1..r]中的元素。下标q也在这个划分过程中进行计算。解决:通过递归调用快速排序,对子数组A[p..q-1]和A[q+1...r]排序。原创 2012-10-07 23:15:08 · 533 阅读 · 0 评论 -
堆排序
堆:堆的性质:(二叉)堆数据结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个结点与数组中存放该结点值的那个元素对应。树的每一层都是填满,最后一层可能除外(最后 一层从一个结点的左子树开始填)。表示堆的数组A是一个具有两个属性的对象:length[A]是数组中元素的个数,heap-size[A]是存放在A中的堆的元素个数。就是说,虽然A[1...length[A]]中都可以包含有效值,但原创 2012-10-07 22:56:54 · 661 阅读 · 0 评论 -
归并排序&求逆序对数
归并排序:基本原理:与插入排序使用的“增量”方法不同,归并排序使用另外一种策略:分治法 分治策略基本思想:将原问题划分成n个规模较小而结构与原问题相似的小问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。 分治模式在每一层递归上都有三个步骤;分解(Divide):将原问题分解成这一系列子问题。解决(Conquer):递归地解各子问题。若子问题足够小,则直接原创 2012-10-07 22:36:22 · 8079 阅读 · 0 评论 -
插入排序
1、插入排序基本原理:插入排序的原理与很多人打牌时,整理手中牌时的做法差不多。在开始摸牌时,我们的左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的每一张牌从右到左地进行比较。无论在什么时候,左手中的牌都是排好序的,而这些牌原先都是桌上那副牌里最顶上的一些牌(摘自《算法导论》) 时间复杂度:O原创 2012-10-07 22:08:45 · 788 阅读 · 0 评论 -
线性时间排序-计数排序
计数排序:基本思想:对每一个输入元素x,确定出小于x的元素个数。有了这一信息,就可以把x直接放到它在最终输出数组中的位置上。例如,如果有17个元素小于x,则x就属于第18个输出位置。 时间复杂度:O(k+n),n为输入元素个数,假设所有输入元素都不大于k。空间方面则额外用到了两个数组,一个用来统计,一个用来存放排序结果。所以也是O(n+k) ; #include原创 2012-10-07 23:20:58 · 676 阅读 · 0 评论 -
基数排序
原文地址:http://www.cnblogs.com/xiaosuo/archive/2010/03/12/1654353.html 分配排序的基本思想:排序过程无须比较关键字,而是通过“分配”和“收集”过程来实现排序。它们的时间复杂度可达到线性阶:O(n)。一、两种多关键码排序方法 最高位优先法(MSD法)。先按k1排序,将序列分成若干子序列,每个子序列中的记录具有相同的k1转载 2012-10-08 22:54:58 · 1128 阅读 · 0 评论 -
桶排序
http://blog.youkuaiyun.com/msccao/archive/2007/09/17/1788854.aspx 箱排序的变种。为了区别于上述的箱排序,姑且称它为桶排序(实际上箱排序和桶排序是同义词)。1、桶排序基本思想 桶排序的思想是把[0,1)划分为n个大小相同的子区间,每一子区间是一个桶。然后将n个记录分配到各个桶中。因为关键字序列是均匀分布在转载 2012-10-08 23:00:46 · 534 阅读 · 0 评论 -
关于串口通信
昨天,应舍友请求帮它写一个简单的上位机软件。功能非常简单,就是拖几个按钮控件,然后添加相应功能,传送两个字节的数据即可(用来控制小车速度,以及小车运转方向 ),界面如图。 此前也帮他写过另外一个上位机软件,也是非常简单,就是接收相应数据并显示,并传送特定的控制信息,控制单片机。因为自己对硬件方面一窍不通,完全不懂,所以唯有百度。然后找到VC在这串口通信这方面,一般有三种方式原创 2012-10-11 23:17:41 · 1401 阅读 · 0 评论 -
二叉查找树
二叉查找树概述:查找树是一种数据结构。它支持多种动态集合操作。包括SEARCH,MINIMUM,MAXIMUM,PREDECESSOR,SUCCESSOR,INSERT以及DELETE,它既可以用作字典,也可以用作优先队列(堆)。在二叉查找树上执行的基本操作的时间与树高度成正比。对于一棵含有n个结点的完全二叉树,这些操作的最坏情况运行时间为O(nlgn)。但是,如果树是含有n个结点的线性链原创 2012-10-14 00:11:04 · 630 阅读 · 0 评论 -
Hello Qt!& 最近
最近很难得地找到一个跟别人做项目的实习机会,是自己真正意义的第一个项目。由于主观和客观的原因,一直以来都没有实践机会。由于此,看过的书、记得的内容,忘了又记,记了又忘,又或者说自己根本没有理解那些内容。 一直对自己的水平都没有什么信心,事实上也正是如此。当我投了简历之后,别人二话不说就同意我进去了。这么爽快的原因只有一个,不是我真的有能力,而是他们招不到人。 不过,既然别人同意我跟原创 2012-10-30 01:25:07 · 689 阅读 · 0 评论 -
在德问上面看到的一道面试题:交换数字位置得到相对最大值
从德问上面看到别人提问的一道面试题,做了一下:面试题:交换数字位置得到相对最大值前段时间遇到的一个面试题:给你一个数,允许你选择两个数字交换位置,每个数只能交换一次位置,请交换得到尽可能的最大值,写出算法(请注意考虑有重复数字的情况)。例如:13792 -> 97312 (每个数字只能交换一次,所以无法得到 97321,尽量就ok了)原创 2012-12-01 00:21:10 · 1960 阅读 · 1 评论 -
ACM水题-数据选取(AC解题报告)
数据选取 Time Limit:1000MS Memory Limit:32768KDescription:欢迎进入“挂羊头,卖狗肉”专柜~~下面继续~~ 给定1个数m和n个数{a1,a2,...,an},那么请问,最少需要从这n个数中选出多少个,使这些数之和恰好等于m?Input:首先一个整数cas,表示接下来由cas个数据每组数据第一行两个整数m,n(原创 2012-08-13 00:26:20 · 1196 阅读 · 0 评论 -
ACM水题-排列(解题报告)
排列 Time Limit:1000MS Memory Limit:32768KDescription:Ray又对数字的列产生了兴趣: 现有四张卡片,用这四张卡片能排列出很多不同的4位数,要求按从小到大的顺序输出这些4位数。Input:第一行是一个整数N,表示数据的组数。每组数据占一行,代表四张卡片上的数字(保证四个数字都不同,且0<数字<10)。Outp原创 2012-07-25 17:10:01 · 1823 阅读 · 0 评论 -
ACM水题-合法字符串 (AC,递归遍历,分情况,代码比较长)
合法字符串 Time Limit:1000MS Memory Limit:65536KDescription:一个合法的字符串是指最少含有一个元音字符和两个辅音字符的字符串。元音字符包括六个(a、o、e、i、u),其它小写字母都是辅音字符。现给你由多个小写字母组成的字符表,要你按字典序输出由这些字符表里的字母组成的所有长度为L的合法字符串。注:一个字符串里每个字母最多只能原创 2012-06-15 00:44:02 · 1574 阅读 · 0 评论 -
ACM水题-Beautiful Sequence(AC,杂题,贪心思想?)
Beautiful SequenceTime Limit:1000MS Memory Limit:65536KTotal Submit:206 Accepted:28 DescriptionA sequence of numbers A[1], A[2], ..., A[N] is beautiful only if each number A[i] ≥ i ( 1 ≤ i ≤原创 2012-05-27 19:12:10 · 1020 阅读 · 0 评论 -
ACM水题-Rescue LK(AC,迷宫问题,DFS求解)
Rescue LKTime Limit:1000MS Memory Limit:65536KTotal Submit:83 Accepted:42 Descriptionziliang loves LK. But LK was kidnapped by Monster.oyy,and was put in a labyrinth.After thousands of hard原创 2012-05-13 17:05:01 · 2933 阅读 · 0 评论 -
ACM水题-算法普及课程(AC,区间问题)
算法普及课程Time Limit:1000MS Memory Limit:65536KTotal Submit:188 Accepted:54 Description在将来的某一天,ACM-ICPC在我们学校越来越受到重视了,大家对算法的学习热情非常高,学校决定每天都开设很多算法普及课,由于课程太多,学校没有太多的老师,于是学校派我们ACM集训队的成员去当小讲师。每个课程都有原创 2012-05-28 15:05:50 · 3038 阅读 · 3 评论 -
ACM水题-合并果子(堆结构,贪心算法,AC)
合并果子Time Limit:1000MS Memory Limit:65536KTotal Submit:285 Accepted:112 Description在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过原创 2012-05-10 20:29:53 · 3952 阅读 · 0 评论 -
ACM水题-AB串(AC,分情况,要小心陷阱,两种思路)
AB串 Time Limit:1000MS Memory Limit:32768KDescription:对一个AB串,进行一定的操作,每次操作只能交换相邻的字符。求最少的操作数使得相同的字母都在同一边,如AAAAABBBBB。Input:每一行给出一个AB串,长度不超过100,且A、B都含有,不含其它字符Output:每一行一个答案,输出最少操作次数原创 2012-06-09 13:02:28 · 2282 阅读 · 0 评论 -
ACM水题-Differing sequence(AC,递归,分情况)
Differing sequenceTime Limit:1000MS Memory Limit:65536KTotal Submit:54 Accepted:20 DescriptionNumbers are beautiful. Sequences are beautiful. One day I sit beside my desk and staring at some原创 2012-06-03 01:03:59 · 697 阅读 · 0 评论