自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

转载 最大流问题:增广路径算法的比较

最大流问题:增广路径算法的比较       这篇文章我们将重温最大流问题,实现一些最有名的增广路径算法的实际分析的目标。我们将讨论的这几种算法的复杂度在O(n*m*m)到O(n*mlogU)之间,并且从讨论的结果中得到在实践中最有效的一种。正如我们所想的,理论上的复杂度并不能揭示该算法在实际中的价值。       这篇文章所针对的是熟悉网络流理论的基本知识的读者。如果你对网络流理论

2017-03-26 20:34:13 4857

转载 srand函数

srand函数是随机数发生器的初始化函数。原型:void srand(unsigned seed);用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如: srand(1); 直接使用1来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, Ja

2017-03-25 10:10:34 1612

转载 queue容器

一.queue模版类的定义在头文件中。queue与stack模版非常类似,queue模版也需要定义两个模版参数,一个是元素类型,一个是容器类型,元素类型是必要的,容器类型是可选的,默认为dqueue类型。定义queue对象的示例代码如下:queueq1;queueq2;queue的基本操作有:1.入队:如q.push(x):将x元素接到队列的末端;

2017-03-24 22:11:35 349

转载 c++ 容器vector的基本操作

在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vectorint>::iterator it;for(it=ve

2017-03-23 19:02:30 1646

转载 C语言里的类型提升

一、类型的提升   把char、unsigned char、short、unsigned short转换成int类型称为类型提升(promotion)。1. 如果short的字节长度小于int的字节长度   char转换成 int   unsigned char转换成 int   short转换成 int   unsigned short转换成 int2. 如果shor

2017-03-23 15:05:02 1268

原创 Longest Substring Without Repeating Characters --leetcode

Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "

2017-03-17 14:56:46 391

原创 Add Two Numbers --leetcode

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i

2017-03-16 22:05:42 301

原创 Two Sum --leetcode

Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the sam

2017-03-15 22:13:13 408

原创 排序算法--快速排序(分治法)

思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整

2017-03-15 20:17:42 2943

原创 排序算法--冒泡排序

冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。题目:任意输入10个整型数字,按从小到大的顺序排列。程序见下:

2017-03-15 17:08:19 395

原创 排序算法--选择排序法

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。例题:任意输入10个数字,选择排序后输出。见代码:#include#de

2017-03-15 16:19:34 386

转载 八皇后与回溯法

题目原文:Write an algorithm to print all ways of arranging eight queens on a chess board so that none of them share the same row, column or diagonal.译文:经典的八皇后问题,即在一个8*8的棋盘上放8个皇后,使得这8个皇后无法互

2017-03-14 20:53:56 539

原创 回溯法在排列组合问题中的应用

回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术称为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 例题:排列组合问题,找出n个自然数(1,2,3,4,。。。n)中取r个数的组合。分析:当n=5,r=3,所有组合为:5 435 425 415 3

2017-03-14 20:15:43 1108

原创 简单迭代法求解方程举例

迭代法是方程及方程组求解的重要方法。关于其原理可另行查询。这里附上一篇简单的迭代法小程序。用于解方程:x+e^x=0#include#include#define fnx(x) -exp(x)void main(){ float x0,x1; x0=0; x1=fnx(x0); while(fabs(x1-x0)>0.00001) { x0=x1; x1=fnx(

2017-03-14 16:05:21 21156

转载 gcc -lm 选项

今天看到书上出现gcc -lm 的选项,甚是不解,在网上查阅了一些资料,访问了一些论坛整理下。初学linux和gcc,C代码调用math.h中的函数有问题,如sqrt函数。若如sqrt(3.0)则可以编译通过并运行正常,若如sqrt(n),这里n是定义好的double型变量,则不能编译通过,错误信息为:undefined reference to 'sqrt'。像 sqrt(3.0); 这

2017-03-14 14:37:50 3905

转载 BigEnd和LittleEnd的故事

在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。 目前在各种体系的计算机中,通常采用big-endian和little-endian两种字节存储机制描述在多字节数中各个字节的存储顺序。

2017-03-14 09:12:17 2651

转载 Linux终端处理和Poll机制

中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务 的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异常)。单片机中断处理:①分辨中断类型②调用处理函数③清中断Linux系统 : asm_do_IR

2017-03-13 22:04:00 435

转载 Linux程序进程前台后台切换操作

1、在命令末尾加上 & 符号,就可以让程序在后台运行。例如:command & 2、如果程序正在前台运行,可以使用 Ctrl+z 选项把程序暂停,然后用 bg %[number] 命令把这个程序放到后台运行。3、查看所有后台运行的程序:      jobs –l 4、把后台运行的程序调到前台:  fg %[number]5、直接终止后台运行的程序:  kill 

2017-03-13 11:31:22 3360

原创 字符型设备驱动程序开发流程(驱动程序框架+类似裸板编程)

一、驱动程序框架:1、open()static int first_drv_open(struct inode *inode, struct file *file){ return 0;}2、write()static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count

2017-03-11 22:25:22 716

转载 设备、设备文件和设备驱动

1.设备Linux下的设备通常分为三类,字符设备,块设备和网络设备。见的字符设备有鼠标、键盘、串口、控制台等。常见的块设备有各种硬盘、flash磁盘、RAM磁盘等。在Linux里一个网络设备也可以叫做一个网络接口,如eth0,应用程序是通过Socket而不是设备节点来访问网络设备,在系统里根本就不存在网络设备节点。网络接口没有像字符设备和块设备一样的设备号,只有

2017-03-11 21:57:54 582

转载 常用字符串操作函数

1、字符串copy函数strcpy,实现如下: ?123456789101112#include assert.h>char*mystrcpy(char*dest,constchar *sor)//将源字

2017-03-11 16:01:55 310

转载 volatile

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

2017-03-11 09:51:12 261

转载 linux文件操作函数(open、write、read、close)

1. open()函数功能描述:用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。所需头文件:#include ,#include ,#include 函数原型:int open(const char *pathname,int flags,int perms)参数:pathname:被打开的文件名(可包括路径名如"dev/tt

2017-03-10 22:28:54 2669

转载 mknod命令

mknod命令用于创建Linux中的字符设备文件和块设备文件。 语法 mknod(选项)(参数) 选项 -Z:设置安全的上下文; -m:设置权限模式; -help:显示帮助信息; --version:显示版本信息。 参数 文件名:要创建的设备文件名; 类型:指定要创建的设备文件的类型; 主设备号:指定设备文件的主设备号; 次设备号:指定设备文件的次设

2017-03-10 15:23:29 625

转载 insmod 和 rmmod

Linux内核是个很庞大的东西,要全部了解清楚是很难的,所以我们所做的内核上的开发也是为驱动做一些基本的准备。其中Linux的系统的构成、内核的构成还有内核的目录结构在这里就不去做过多的解释,有兴趣的可以自己查找相关的资料。 一、内核模块的特点    a)        不会被编译进内核之中,这样的话可以尽可能的控制Linux内核的大小。    b)    

2017-03-10 14:49:37 1824

转载 struct inode 和 struct file

1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node    i_hash;struct list_head    i_list;struct list_head    

2017-03-10 12:04:23 262

转载 struct class

设备类struct class是一个设备的高级视图,它抽象出低级的实现细节。例如,驱动可以见到一个SCSI磁盘或者一个ATA磁盘,在类的级别,他们都是磁盘,类允许用户空间基于它们作什么来使用设备,而不是它们如何被连接或者它们如何工作。struct class{    const char *name;   //类名称    struct module *owner;   //对应模块

2017-03-10 11:59:17 309

转载 ubunt开启nfs服务+jz2440挂载nfs文件系统

#sudo apt-get install nfs-kernel-server-------------------------------------------打开/etc/exports文件,在末尾加入:/home/xgc *(rw,sync,no_root_squash)注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定义,各字段含义如下:

2017-03-09 22:08:27 1048

原创 In file included from scripts/kconfig/lxdialog/checklist.c:24:0: scripts/kconfig/lxdialog/dialog.h:3

问题:在Linux环境make menuconfig的时候出现一下错误。In file included from scripts/kconfig/lxdialog/checklist.c:24:0:scripts/kconfig/lxdialog/dialog.h:32:20: fatal error: curses.h: No such file or directorycompilati

2017-03-08 17:24:26 2943

转载 linux-2.6.22.6/Makefile:416: *** mixed implicit and normal rules: deprecated syntax

今天在按照韦东山大哥的教程流程编译内核的时候出现了这个问题    linux-2.6.22.6/Makefile:416: *** mixed implicit and normal rules: deprecated syntaxlinux-2.6.22.6/Makefile:1449: *** mixed implicit and normal rules: d

2017-03-08 17:01:46 1582

转载 大端与小端存储模式详解

端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian(这句话最为形象)。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big E

2017-03-07 21:55:57 316

转载 Linux下的lds链接脚本详解

一、 概论每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情.连接器有个默认的内置连接脚本, 可用ld –verbose查看. 连接选项-r和-N可以影响默认的连接脚本(如何影响?).-

2017-03-07 15:58:24 776

转载 stmdb和ldmia指令

首先一句话说一下stmdb和ldmia指令的作用:stmdb和ldmia指令一般配对使用,stmdb用于将寄存器压栈,ldmia用于将寄存器弹出栈,作用是保存使用到的寄存器。ARM指令的多数据传输(STM、LDM)中,提到:多寄存器的Load和Store指令分为2组:一组用于数据的存储与读取,对应于IA、IB、DA、DB,一组用于堆栈操作,对应于FD、ED、FA、EA,两组中对应的

2017-03-02 10:55:03 4573 2

转载 MSR与MRS

1、MRS指令MRS指令的格式为:MRS{条件}   通用寄存器,程序状态寄存器(CPSR或SPSR)MRS指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下两种情冴: Ⅰ.当需要改变程序状态寄存器的内容时,可用MRS将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。Ⅱ.当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出

2017-03-02 10:42:04 933

转载 S3C2440--MMU

1.MMU的作用我们再第一部分讨论的全部都是物理地址,注意不要与这部分要将的虚拟地址给混淆起来。内存管理单元(Memory ManagerUnit)简称MMU。它负责将虚拟地址转换成物理地址,然后传给上部分介绍的存储管理器进行寻址。现代的多用户多进程操作系统通过MMU使各个用户进程都有自己的独立的地址空间:地址映射功能功能使的个进程拥有“看起来”一样的地址空间,而内存访问权

2017-03-01 22:34:04 444

转载 S3C2440--存储管理器

1. 如何从外部设备read数据?假如要从网卡或者SDRAM等设备读取数据 地址为0x30000000 代码可以如下:mov R1, #0x30000000ldr R0, [R1] //也就是读取4byte数据12122. 存储管理器的作用CPU不需要关心外设是什么,硬件相关所有工作由存储管理器完成: 1. 片选信号 2. bank选择 3. 列

2017-03-01 22:22:30 421

空空如也

空空如也

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

TA关注的人

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