- 博客(19)
- 资源 (7)
- 收藏
- 关注
原创 生成全排列示例
代码示例#include <iostream>#include <string>using namespace std;void fun1(string & list,int n , int index){ if (index >= n) { cout << list << endl; } else { for (int
2016-06-25 16:33:03
693
原创 水管工游戏
一 题目一块矩形土地被分为N*M的单位正方形,现在这块土地上已经埋设有一些水管,水管将从坐标为(1,1)左上角左部边缘,延伸到(N,M)右下角右部边缘。水管只有2种,如下图所示。 每种管道将占据一个单位正方形土地。你现在可以旋转这些管道,使得构成一个管道系统,即创造一条从(1,1)到(N,M)的连通管道。标有树木的方格表示这里没有管道。如下图:一个5*4的土地中(2,4)处有一个树木。 我
2016-06-24 22:53:26
2940
1
原创 Horspool(字符串匹配)算法
Horsepool算法是Boyer-Moore算法的简化版本,这也是一个空间换时间的典型例子。算法把模式P和文本T的开头字符对齐,从模式的最后一个字符开始比较,如果尝试比较失败了,它把模式向后移。每次尝试过程中比较是从右到左的。假设文本中,对齐模式最后一个字符的元素是c,Horspool算法根据c的不同情况来确定移动距离,无论c是否和模式的最后一个字符相匹配。一般来说,会存在下面四种情况。情况1:看
2016-04-30 23:08:13
28097
原创 计数排序
常用的排序算法有很多种,如最常用的快速排序和堆排序等,但这些算法都是基于元素的直接比较,计数排序不是比较排序,排序的速度快于任何比较排序算法,是空间换时间权衡思想的一个典型例子。比较计数排序针对排序列表中的每一个元素,算出列表中小于该元素的元素个数,并把结果记录在一张表中。这个“个数”指出了该元素在有序列表中的位置。例如一个列表A中有一个元素为10,而小于10的元素个数有5个,那么10
2016-04-30 14:37:51
4307
1
转载 硬盘分区表知识
原文请点这里硬盘是现在计算机上最常用的存储器之一。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些数据都以文件的形式存储在硬盘 里。不过,计算机可不像人那么聪明。在读取相应的文件时,你必须要给出相应的规则。这就是分区概念。分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Record,一般
2016-04-28 20:18:59
1634
原创 堆排序
堆的概念通俗的说就是小顶堆本身的值小于或等于自己的任一个孩子节点(如果有孩子节点的话),这样看来,小顶堆中根节点的值是所有元素中最小的。大顶堆则刚好相反。堆节点的访问通常堆是通过一维数组来实现的。在数组起始位置为0的情形中:父节点i的左子节点在位置(2*i+1); 父节点i的右子节点在位置(2*i+2); 子节点i的父节点在位置floor((i-1)/2);以下为上图中的大顶堆在一维数组中的
2016-04-27 14:09:49
673
转载 合并排序详解
看到一篇很详细的文章,将原文照抄如下:—————————————————————————————————————–—————————————————————————————————————–文章作者:Yx.Ac 文章来源:勇幸|Thinking (http://www.ahathinking.com) 插入归并归并排序的时间复杂度为O(nlgn),空间复杂度为O(n);但是一般来讲,基于从单个记录
2016-04-26 21:37:45
6119
原创 简单socket通信示例
相关函数1.创建一个网络套接字int socket(int domain, int type, int protocol); domain:地址族 - AF_UNIX, AF_LOCAL Local communication Unix域协议族 - AF_INET IPv4 Internet protocols - AF_INET6
2016-02-26 14:37:32
1347
原创 快速排序和插入排序
/*快速排序是一种划分交换排序,采用分而治之的策略。基本思想是:通过一趟排序将要排序的数据分割成两部分,其中一部分的所有数据比另一部分的所有数据都要小,然后再按照这个方法对这两部分数据分别进行快速排序,整个排序过程以递归进行。left : 最左边元素的下标right: 最右边元素的下标*/void QuickSort1(int *a,int left,int right){
2016-02-25 17:48:02
1661
原创 约瑟夫环问题
××约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。××以上出自必应网典,最通常的写法是用链表,在网上看到有人用数组,我认为代码冗余过长
2016-02-25 10:33:08
718
转载 裘宗燕:C/C++ 语言中的表达式求值
裘宗燕:C/C++ 语言中的表达式求值经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?” m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5: a = 4; cout << a++ << a; C++ 不是规定 << 操作左结合吗?是C++ 书上写错了,还是这个系统的实现有问题?要
2016-02-24 15:30:24
712
原创 liunx基本命令
一,Linux安装中文man: 1. sudo apt-get install manpages-zh 2. vim .bashrc 3.在文件中最后添加 alias cman='man -M /usr/share/man/zh_CN' 4.重启终端
2016-02-23 18:01:43
408
原创 MFC---定时器和双缓冲机制绘制旋转的金刚石图案
双缓冲原理 MFC中绘制动画的基本思路是在固定时间间隔内绘制图像,然后擦除旧图像再绘制新图像,这样连续 起来就在人类的视觉上形成动画。为了实现这种“绘制-擦除-再绘制”的思路,较老的一种方法是在 OnDraw函数中绘图,然后利用InValidate函数来清空屏幕,然后再绘制新图。因为绘制新旧两幅图像之间 必定需要一定的
2015-12-23 17:23:58
4104
原创 删除一个非空目录
#include int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); int lstat(const char *path, struct stat *buf);
2015-12-04 18:54:37
4781
原创 简单算符优先文法分析程序(编译原理)
题目 实现算符优先文法分析程序;完成对以下表达式文法的分析程序。 G[E]: E->E+T E->T T->T*F T->F F->(E) F->i 优
2015-11-28 23:50:51
16016
转载 c源文件中要包含自己的头文件
引言: 我们经常在c工程中发现,源文件中要包含自己的头文件。一直以来,都不知道为什么这样做。现在,我知道了。以前的认知: 我认为,.c文件没有必要包含自己的.h文件。.h文件包含.c文件中定义的函数和全局变量的声明,.h文件就是.c文件提供的对外接口文件。既然.h文件就是.c文件提供的对外接口文件,那么.c文件就没必要包含自己的.h文件了(.h文件是对外提供用
2015-11-12 14:43:57
6612
2
原创 FCFS、SJF、HRN调度算法
此程序是模拟作业调度中的先来先服务算法(fcfs),最短作业优先算法(sjf),最高响应比优先算法(hrn)。 print()函数的功能是输出模拟后的各作业运行情况。 avg() 函数的功能是计算平均周转时间和平均带权周转时间并输出。 源代码: #include#define MAX 10
2015-11-12 14:36:12
14545
原创 PV----------理发师
题目: 假设有个理发店,只有一个理发师和N张可供顾客等待理发的椅子,如果没有顾客,则理发师睡觉;如果有一顾客进入理发店发现理发师在睡觉,则把他叫醒,试用信号量设计一个协调理发师和顾客的程序。基本思想: 睡眠理发师问题是一种同步问题的抽象描述,该问题主要的活动单元是理发师和顾客到来这两个。其中,理发师有理发和睡觉两个事件;顾客有到来,等待和离去三
2015-11-12 14:27:46
5004
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人