自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 boost字符串算法

boost::algorithm简介2007-12-08 16:59boost::algorithm提供了很多字符串算法,包括: 大小写转换; 去除无效字符; 谓词; 查找; 删除/替换; 切割; 连接; 我们用写例子的方式来了解boost::algorithm能够为我们做些什么。boost::algorithm学习#include using namespace std;

2012-07-27 17:03:02 3293

转载 linux中的互斥锁--mutex,条件变量,信号量,读写锁

进行多线程编程,最应该注意的就是那些共享的数据,因为无法知道哪个线程会在哪个时候对它进行操作,也无法得知哪个线程会先运行,哪个线程会后运行。所以,要对这些资源进行合理的分配和正确的使用。在Linux下,提供了互斥锁、条件变量和信号量来对共享资源进行保护。一、互斥锁互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源。需要的头文件:pthread.h互斥锁标

2012-07-04 08:38:41 1857

转载 gdb调试

小结:常用的gdb命令 backtrace 显示程序中的当前位置和表示如何到达当前位置的栈跟踪(同义词:where) breakpoint 在程序中设置一个断点 cd 改变当前工作目录 clear 删除刚才停止处的断点 commands 命中断点时,列出将要执行的命令 continue 从断点开始继续执行 delete 删除一个断点或监测点;也可与其他命令一起使用

2012-03-08 16:22:42 468

转载 python调试

用pdb调试有多种方式可选:1. 命令行启动目标程序,加上-m参数,这样调用myscript.py的话断点就是程序的执行第一行之前python -m pdb myscript.py2. 在Python交互环境中启用调试>>> import pdb>>> import mymodule>>> pdb.run(‘mymodule.test()’)3. 比较常用的

2012-03-08 15:51:30 757

转载 文本文件和二进制文件区别

当fopen使用文件文件或者二进制文件打开时,区别为:在Windows平台下 如果以“文本”方式打开文件,当读取文件的时候,系统会将所有的"\r\n"转换成"\n";当写入文件的时候,系统会将"\n"转换成"\r\n"写入。 如果以"二进制"方式打开文件,则读/写都不会进行这样的转换。 在Unix/Linux平台下,“文本”与“二进制”模式没有区别。数据有字符型

2012-02-16 16:14:15 486

转载 linux进程通信-消息

消息队列是消息的链接表,包括Posix消息队列system V消息队列。消息队列用于运行于同一台机器上的进程间通信,它和管道很相似,有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。 我们可以用流管道或者套接口的方式来取代它。查询系统消息队列:ipcs -q

2012-01-31 13:25:15 771

转载 Linux进程通信-信号量

一、相关知识 信号量:一个整数;  大于或等于0时代表可供并发进程使用的资源实体数;  小于0时代表正在等待使用临界区的进程数;  用于互斥的信号量初始值应大于0;  只能通过P、V原语操作而改变; 信号量元素组成:  1、表示信号量元素的值;  2、最后操作信号量元素的进程ID  3、等待信号量元素值+1的进程数;  4、等待信号量元素值为0的进程数;

2012-01-31 13:22:39 658

转载 Linux进程通信-管道

管道(pipe):用于亲缘关系进程间(如父子进程,兄弟进程)的通信一个进程写管道:写入字节数小于PIPE_BUF是原子操作,写操作在管道缓冲区没有及时读走时发生阻塞。一个进程读管道:读操作在管道缓冲区没有数据时发生阻塞。主要函数:int pipe(int filedes[2]); 代码实例创建了父子进程,父进程写管道,子进程读管道。代码验证了写阻塞:子进程读一次管道就休眠1

2012-01-31 12:52:10 707

转载 windows进程同步互斥

Windows 临界区,内核事件,互斥量,信号量。临界区,内核事件,互斥量,信号量,都能完成线程的同步,在这里把他们各自的函数调用,结构定义,以及适用情况做一个总结。临界区:适用范围:它只能同步一个进程中的线程,不能跨进程同步。一般用它来做单个进程内的代码快同步,效率比较高。相关结构:CRITICAL_SECTION  _critical相关方法:/*初始化,最先调

2012-01-31 12:44:13 7598

转载 字符串和整数的比较

二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.  整数比较  -eq        等于,如:if [ "$a" -eq "$b" ] -ne        不等于,如:if [ "$a" -ne "$b" ] -gt        大于,如:if [ "$a" -gt "$b" ] -ge        大于等于,如:if [ "$a" -ge "$b

2011-12-15 17:49:24 2395

转载 bash中字符串处理

得到长度:代码:%x="abcd" #方法一 %expr length $x 4 # 方法二 %echo ${#x} 4 # 方法三 %expr "$x" : ".*" 4 # expr 的帮助 # STRING : REGEXP anchored pattern match of REGEXP in STRING查找子串:代码:%expr index $x "

2011-12-15 15:01:03 377

转载 c++输入流错误码

在前一节中我们有几个例子中提到了cin函数出错,以致不再执行读操作(程序8)。而且我们经常会看到程序中会出现cin.clear(),cin.ignore(), cin.fail()等函数。这些函数都是与cin的错误处理有关的。这一节我们来分析一下cin的错误处理机制,并且学习几个重要的函数:cin.fail(), cin.bad(), cin.good(), cin.clear(), cin.ig

2011-11-25 10:45:15 1173

转载 八数码问题

问题简介:所谓八数码问题是指这样一种游戏:将分别标有数字1,2,3,…,8的八块正方形数码牌任意地放在一块3×3的数码盘上。放牌时要求不能重叠。于是,在3×3的数码盘上出现了一个空格。现在要求按照每次只能将与空格相邻的数码牌与空格交换的原则,将任意摆放的数码盘逐步摆成某种特殊的排列。如下图表示了一个具体的八数码问题求解。问题分析:首先,八数码问题包括一个初始状态(START

2011-11-16 12:11:20 1607

转载 简单工厂,工厂, 抽象工厂区别

public class SimplyFactory { /*** 静态工厂方法*/public static Prouct factory(String which) throw NoSuchProductExcption{    if(which.equalIgnoreCase("product1"))   {    return new Product1(

2011-11-16 11:55:40 545

转载 后缀数组

后缀数组——处理字符串的有力工具作者:罗穗骞2009年1月  【摘要】  后缀数组是处理字符串的有力工具。后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也并不逊色,而且它比后缀树所占用的内存空间小很多。可以说,在信息学竞赛中后缀数组比后缀树要更为实用。本文分两部分。第一部分介绍两种构造后缀数组的方法,重点介绍如何用简洁高效的代码

2011-11-15 13:08:17 3233

原创 根据经纬度计算球面距离

double zz(double s){    return (s * 3.1415927 / 180.0);}double sqr(double s){    return s * s;}double distance(double alongitude, double alatitude, double blongitude, double blatit

2011-11-15 13:05:38 1238

转载 高级语言函数调用过程-bp,sp

sp作为基址指针访问函数的参数和函数中得局部变量,sp是栈顶指针,栈的方向是由大到小。临时存储区做为函数局部变量的存储区域。VC6.0中默认是40h大小,当函数中包含局部变量时,临时存储区会相应的扩充,局部变量占多少字节,临时存储区就增加多少字节。比如函数中有临时变量int a,则临时存储区扩充为44h大小。摘要:本文说明高级语言编译成汇编语言后,高级语言中函数调用的汇

2011-11-15 11:54:52 1432

原创 求二分图最大匹配

一直寻找二分图中是否存在着交错链,如果存在,则使匹配的数目增1.交错链开始于左部,也结束于左部。路径长度为奇数,第1条和最后一条线段都不属于匹配。这样,如果存在交错链则肯定存在另一个匹配比原先的匹配长度多1.flag代表是否当前点已经被访问过,link代表构成交错链以后点的前驱bool source[110][310],flag[310];int _link[310],p,n;bool find(

2008-08-07 15:19:00 605

原创 字符串匹配算法

朴素的字符串匹配算法需要n*m的时间复杂度。KMP算法能够很好的解决字符串匹配问题。 int fail[n];//////失败函数void compute-fail()//s2为子字符串{    fail[0]=-1;    k=-1;    for(i=1;i    {        while(k>-1&&s2[i]!=s2[k+1])k=fail[k];        if(s2[k+1]=

2008-08-07 14:44:00 576

原创 查找

二分查找:数组必须是有序的数组。int low,hiagh;int k;while(low{     int mid=(low+high)/2;     if(k==a[mid])return true;     else if(k     else low=mid+1;} 寻找数组中第i小的元素利用快速排序的思想。int   select(int low,int high,int i) //i代

2008-08-07 14:13:00 510

原创 线性时间排序

计数排序假设n个输入元素中的每一个都是介于0到k之间的证书,此外k为某个证书。当k=o(n)时,计数排序的运行时间是O(n);计数排序的基本思想是对每一个输入元素x,确定出小于x的元素个数,有了这一信息,就可以把x直接放到它在最终输出数组的位置上。int k;//所有数都介于0到k之间int a[n],b[n];//a为未排序的数组,b为排序好的数组void  count-sort()------

2008-08-07 13:57:00 469

原创 排序算法

选择排序插入排序交换排序排序算法最好时间复杂度最差时间复杂度平均时间复杂度空间复杂度稳定性直接插入排序O(n)O(n2)O(n2)O(1)稳定冒泡排序O(n)O(n2)O(n2)O(1)稳定选择排序O(n2)O(n2)O(n2)O(1)不稳定

2008-08-07 13:34:00 425

原创 求最大公约数算法

欧几里德算法:int gcd(int a,int b)//a>b{   if(b==0)return a;   else return gcd(b,a%b);}stein算法:欧几里德算法是计算两个数最大公约数的传统算法,他无论从理论还是从效率上都是很好的。但是他有一个致命的缺陷,这个缺陷只有在大素数时才会显现出来。考虑现在的硬件平台,一般整数最多也就是64位,对于这样的整数,计算两个数之间的模是

2008-08-07 11:29:00 554

原创 pku1015 Jury Compromise解题报告

该题可以转化为从一个数列中抽取一定数量的数,使其和的绝对值最小。 如:-1,-2,-3,-4,-5,-6,-7,-8,0,1,2,3,4,5,6,7,8,9;        -400从中抽取5个数,使其绝对值最小;bool judge[21][810];//表示从数列中抽取i个数可能达到的和值。int a[i]为数列;第一个数时,judge[1][a[1]]=1;第二个数时,if(judge[1]

2008-07-28 15:30:00 751

转载 找零钱问题

如题,给出6种珠宝,每种珠宝的价值为1,2,3,4,5,6;每种珠宝的数量为m1,m2,m3,m4,m5,m6;求解:是否这一堆珠宝集合可以被平分为价值相同的两堆?问题可以被转化为,num为这堆珠宝总价值的一半,问是否有一定数量珠宝的价值恰好等于num?这样问题就转化为找零钱问题,用动态规划可解;算法:bool judge[60001];judge[i]用来判断价值i是否能够用来表示;for(i=

2008-07-28 15:08:00 618

原创 连续的子序列最大值

给出一个数字序列,如-1,1,2,-3,4,6,-5,8,-3,9;求连续的子序列最大值。该题中,最大的子序列为4+6+(-5)+8+(-3)+9=19 算法:test[]={-1,1,2,-3,4,6,-5,8,-3,9}m=0;for(k=0;kn;k++){ m+=test[k]; if(m0)m=0; if(max1m)max1=m;}pku 10

2008-07-28 14:50:00 957

转载 MyEclipse配置

我的电脑-属性-高级-环境变量,里面有俩个选项,一个是用户变量,一个是环境变量,由于我们都是单用户操作,所以为了怕和别的环境变量混乱,介意大家在用户变量里面新建,然后配置                              首先配置一下jdk:1.新建-变量名(path)-变量值(D:/Program Files/Java/jdk1.6.0_02/bin)                  

2008-07-28 14:07:00 730

原创 pku1009,Edge Detection解题报告

如题,求转化过后的数字序列;解题思路:如果只有一行,则从输入序列中分别判断。对于每个相同的数字序列,如15 4,4个连续的15,分别计算第一个和最后一个15的值,中间的都以0填充。如果有多行,每一行的值都由它的上一行,和下一行共同判断计算。定义变量数组image[3][3000][2],用来存储从输入序列中读入的三行,然后根据这三行计算中间一行的值。优化:如果有多行都是相同的值,则中间所有行的值都

2008-07-25 22:49:00 769

转载 七种qsort排序方法

一、对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),cmp); 二、对char类型数组排序(同int类型) char word[100]; Sample: int cmp

2008-07-25 22:39:00 449

原创 中国剩余定理

中国剩余定理是用来解决同余方程组的问题。如 pku1006:Biorhythms 题设m1,m2....mk两两互质, x=a1(mod m1); x=a2(mod m2); . . x=ak(mod mk);该方程组在0该问题的求解用到了求最大公约数的算法。求最大公约数的欧几里德算法:int gcd(int a,int b)//a>=b{   if(b==0)return a;   else r

2008-07-25 21:42:00 587

原创 编程时圆周率的精确取值

圆周率用p表示#includecos(180~)=-1;p=acos((double)-1); 这样就可以求出圆周率的精确值。

2008-07-25 21:37:00 942

原创 字符串与值类型之间的转换

字符串转换成int类型-->atoi()函数如#includechar s[5]="10000";int a=atoi(s);string s="10000";int a=atoi(s.c_str());字符串转换成float,double类型-->atof()函数,用法和上述用法一样。值类型转换为字符串类型-->sprintf()函数;如:#includechar s[100];int a=10

2008-07-25 21:27:00 543

原创 大数的加减乘除

当数的位数非常大而常规的数据类型不足以存储的时候,可以考虑使用大数。即用一个长的数组来存储相应的位数,如inta[100],a的每一位存储一位数字或几位数字,根据常规的加减乘除运算对数组进行操作。使用string类型对数组进行操作,虽然比用整型简便,但可能增加了运行时间。pku1001:Exponentiation 就用到了大数的乘法如下是一个使用string类型进行大数加减乘除的例子:#

2008-07-25 20:51:00 2820

转载 pku题目分类

主流算法:         1.搜索 //回溯         2.DP(动态规划)          3.贪心          4.图论 //Dijkstra、最小生成树、网络流         5.数论 //解模线性方程         6.计算几何 //凸壳、同等安置矩形的并的面积与周长         7.组合数学 //Polya定理         8.模拟          9.数据

2008-07-25 20:48:00 731

空空如也

空空如也

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

TA关注的人

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