自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 问答 (11)
  • 收藏
  • 关注

转载 0008算法笔记——【分治法】循环赛事日程表

问题描述:     设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:        (1)每个选手必须与其他n-1个选手各赛一次;     (2)每个选手一天只能参赛一次;     (3)循环赛在n-1天内结束。     请按此要求将比赛日程表设计成有n行和n-1列的一个表。在表中的第i行,第j列处填入第i个选手在第j天所遇到的选手。其

2016-11-30 23:52:40 3969

转载 0007算法笔记——【分治法】最接近点对问题

问题场景:在应用中,常用诸如点、圆等简单的几何对象代表现实世界中的实体。在涉及这些几何对象的问题中,常需要了解其邻域中其他几何对象的信息。例如,在空中交通控制问题中,若将飞机作为空间中移动的一个点来看待,则具有最大碰撞危险的2架飞机,就是这个空间中最接近的一对点。这类问题是计算几何学中研究的基本问题之一。      问题描述:给定平面上n个点,找其中的一对点,使得在n个点的所有点对中,该点

2016-11-30 00:17:18 732

转载 0006算法笔记——【分治法】线性时间选择

线性时间选择问题:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k小的元素,(这里给定的线性集是无序的)。       1、随机划分线性选择       线性时间选择随机划分法可以模仿随机化快速排序算法设计。基本思想是对输入数组进行递归划分,与快速排序不同的是,它只对划分出的子数组之一进行递归处理。       程序清单如下:

2016-11-28 22:26:02 538 1

转载 0005算法笔记——【分治法】快速排序

1、未优化的快速排序       快速排序的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。   程序清单如下:[cpp] view plain copy//2d8-

2016-11-27 23:44:34 374

转载 0004算法笔记——【分治法】合并排序

合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序,合并排序也叫归并排序。

2016-11-26 23:23:01 241

转载 0003算法笔记——【分治法】分治法与二分搜索,棋盘覆盖问题

1、分治法分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归的解这些子问题,然后将各子问题的解合并得到原问题的解。     分治法所能解决的问题一般具有以下几个特征:  1) 该问题的规模缩小到一定的程度就可以容易地解决  2) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。  3) 利用该问

2016-11-25 23:33:04 405

转载 0002算法笔记——【递归】排列问题,整数划分问题,Hanoi问题

递归的概念想必大家都清楚,概念神马的直接略过。这里介绍递归相关的几个问题。    1、排列问题    设R={r1,r2,...,rn}是要进行排列的n个元素,Ri=R-{ri}。集合x中元素的全排列记为Perm(X)。(ri)Perm(X)表示在全排列Perm(X)的每一个排列前加上前缀ri得到的排列。R的全排列可归纳如下:    当n=1时,Perm(R)=(r),其中

2016-11-24 23:25:08 416

转载 0001算法笔记——NP完全理论

说来遗憾,在CSDN这么久,一直都是转载和收藏同行精英门写的好文章。这也许就是自己编程水平久久上不去的原因吧,是该改改东一榔头西一棒子的坏习惯了。耶稣说的对,“好记性不如烂笔头”,哥从现在开始要写原创文章了。这篇文章作为算法学习笔记开篇,本人学习算法是看的王晓东的《计算机算法设计与分析》。一开始是买了本《算法导论》,书到的时候翻了翻,砖头啊,那个难度恐怕乔帮主在世也未必能琢磨得透吧。还是看国产的书

2016-11-23 23:38:28 588

原创 malloc最大内存申请量

#include #include unsigned maxinum = 0;int main(){    unsigned blocksize[] = {1024 * 1024,1024,1};    int i,count;    for(i = 0; i     {        for(count = 1;;count++)     

2016-11-22 23:04:14 1203 1

转载 欧拉图详解

欧拉图详解        通过图(无向图或有向图)中所有边一次且仅一次行遍图中所有顶点的通路称为欧拉通路,通过图中所有边一次且仅一次行遍所有顶点的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph),具有欧拉通路而无欧拉回路的图称为半欧拉图。        1 定义        欧拉通路(Euler tour)——通过图中每条边一次且仅一次,并且过每一顶

2016-11-21 23:16:57 3391

转载 汇编指令大全

汇编指令大全一、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 汇编指令大全1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP

2016-11-20 23:46:44 316

转载 一道趣题

题目是:“迷宫”题:从图左边入口处的2011进去,在迷宫里转悠,最后变成2012从右边出来。可以在迷宫里转圈,可以重复之前走过的路,但不能回退。代码很乱下面是运行效果和代码,计算是从下往上依次计算,回溯就没调整顺序了,从下往上啊![cpp] view plain copy// funny.cpp : 定

2016-11-19 23:48:36 220

原创 静态链接--空间和地址分配

多个文件链接在一起的时候,会做到相似段合并,数据段在一起,代码段在一起。这样能节省空间,对于x86的硬件来说段的装载地址和空间的对齐单位是页,是4096个字节,如果一个个段分开存放,会造成大量的内部碎片。链接器为目标文件分配空间和地址:【1】输出的可执行文件的空间【2】装载后的虚拟地址的虚拟地址空间a.c#include extern int shared;

2016-11-18 18:00:42 443

转载 趣写算法系列之--匈牙利算法

【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程】匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。-------等等,看得头大?那么请看下面的版本:通

2016-11-17 23:06:36 329

转载 C语言位运算妙用

位运算应用口诀清零取反要用与,某位置一可用或若要取反和交换,轻轻松松用异或移位运算要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。     2 "     3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。     4 ">>>"运算符

2016-11-16 23:17:28 3473

转载 linux静态链接库与动态链接库详解

linux静态链接库与动态链接库详解一顺便说说了哦  通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file).程序在运行时,与函数库再无瓜葛,因为所有需要的函数已拷贝到自己门下。所以这些函数库被成为静态库(static libar

2016-11-15 23:52:21 257

转载 Makefile经典教程

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一

2016-11-14 23:08:14 424

原创 ELF文件结构描述(2)

(3)重定位表 readelf -S demo.o之下有一个: .rel.text这就是重定位表,有说明需要重定位。(main中有printf函数就会有)还有一些:.rel.data 针对.data的重定位表。(4)字符串表因为字符串的长度往往是不确定的,所以用固定的结构来表示比较困难。常见做法是吧字符串集中存放到一个表中,使用偏移量来引用字符串。7

2016-11-10 19:29:51 276

原创 ELF文件结构描述(1)

ELF目标文件格式【1】最前部是ELF文件头(ELF Header)。【2】ELF文件各个段。【3】段表:段的段名,段的长度,在文件中的偏移,读写权限。(1)查看ELF文件头:readelf -h demo.o  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 //ELF魔数  Class:

2016-11-10 17:08:58 421

转载 objdump命令的使用

objdump命令的使用objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍:objdump -f test显示test的文件头信息objdump -d test反汇编test中的需要执行指令的那些section

2016-11-10 16:23:51 326

原创 Linux目标文件的格式,目标文件是怎么样的?

目标文件的格式:可执行文件格式(Executable)【1】现在PC平台主流的可执行文件格式(Executable),主要是Windows下的PE,Linux下的ELF。【2】目标文件就是:linux下编译后未进行连接后的.o文件。他和可执行文件内容和格式很相似,,所以一般采用相同的格式存储。【3】动态链接库:Windows下的.dll,Linux下的.so 静态链接库:Win

2016-11-10 16:00:54 1187

原创 LINUX 下的UDP通信

客户端#include #include #include #include #include #include #include  #include #define portnumber 3000int main(){    int sockfd;    struct sockaddr_in serv_addr;    st

2016-11-09 22:54:15 353

原创 gcc——预处理(预编译),编译,汇编,链接

一,预编译操作步骤:gcc -E hello.c -o hello.i主要作用:处理关于 “#” 的指令【1】删除#define,展开所有宏定义。例#define portnumber 3333【2】处理条件预编译 #if, #ifdef, #if, #elif,#endif【3】处理“#include”预编译指令,将包含的“.h”文件插入对应位置。这可是递归进行的,文件内

2016-11-08 17:14:41 18757 1

原创 linux客户端与主机通信

linux下设置在同一个网段使用 ifconfig eth0 192.168.1.100eth0创建的子网卡客户端#include  #include  #include  #include  #include  #include  #include  #include  #define portnumber 3000int ma

2016-11-07 22:53:26 401

转载 套接字

套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。形象的可以理解为:举例说明下:Socket=Ip address+ TCP/UDP + port区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使

2016-11-06 22:46:33 339

转载 MD5算法原理

MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。MD5算法的使用不需要支付任何版权费用。    MD5功能:    输入任意长度的信息,经过处理,输出为128位的信息(数字指纹);    不同的输入得到的不同的结果(唯一性);    根据128位的输出结果不可能反推出输入的信息(不可逆); 

2016-11-05 21:55:34 402

转载 网络数据传输的三种校验方法

一、奇偶校验根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。 校验方法 奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为

2016-11-05 21:54:08 9918

转载 解释什么是字对齐什么是半字对齐

一般情况下字为32位(4字节)、半字为16位(2字节)、字节为8位(1字节)。大多数计算机使用 字节(8位的数据块)作为最小可寻址的存储器单位 ,而不是访问存储器中单独的位。存储器的每一个字节都由唯一的数字标识,称为该字节的地址,所有可能地址的集合称为存储器空间。举例来说,ARM处理器工作状态有如下两种:ARM状态:执行字对齐的32位ARM指令。Thumb状态:执行

2016-11-04 23:10:51 5369 1

转载 上下文无关文法

上下文无关文法有以下的特点:一个终结符的有限集(A set of terminal symbols),构成文法的最基本的字符就是这个文法的终结符,例如一个能够产生个位数的文法规则digit --> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9,则数字0~9就是这个文法的终结符,一个能够产生变量名的文法规则variable --> ('A'-'Z' |

2016-11-03 23:56:53 2041

转载 C中的volatile用法

volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int j = i; ... int k = i; 

2016-11-02 23:57:56 193

原创 linux_sqlite3添加新信息,插入信息

#include#include #include void create_table(sqlite3 *db){    char *sql;    char *errmsg;    int ret;sql = "create table if not exists mytable (id integer primary key,name tex

2016-11-01 22:44:02 566

空空如也

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

TA关注的人

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