- 博客(47)
- 资源 (2)
- 收藏
- 关注
原创 贴上自己的一个python写的去c语言注释的小脚本,以备后用
#!/usr/bin/pythonimport sysinput = sys.argv[1]fp = open(input,"r")flag = 0quote = 0 for line in fp: myline = "" length = len(line) for index in range(length): if flag == 0 and quote =
2013-04-17 14:18:40
2206
转载 实现守护进程的步骤
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本身并不复杂,复杂的是各种版本的Unix的
2013-02-26 14:54:14
1319
转载 最近点对问题
在二维平面上的n个点中,如何快速的找出最近的一对点,就是最近点对问题。 一种简单的想法是暴力枚举每两个点,记录最小距离,显然,时间复杂度为O(n^2)。 在这里介绍一种时间复杂度为O(nlognlogn)的算法。其实,这里用到了分治的思想。将所给平面上n个点的集合S分成两个子集S1和S2,每个子集中约有n/2个点。然后在每个子集中递归地求最接近的点对。在这里,一个关键的问题是如
2012-09-12 22:52:04
34744
转载 python中中文编码问题
转自http://www.cnblogs.com/yangze/archive/2010/11/16/1878469.html编码问题一直是很头痛的问题: 当字符串是:'\u4e2d\u56fd' >>>s=['\u4e2d\u56fd','\u6e05\u534e\u5927\u5b66']>>>str=s[0].decode('unicode_escape') #.e
2012-09-08 22:05:31
1333
原创 HTML 解析器
代码托管在google code上http://code.google.com/p/easy-html-parser/downloads/list
2012-09-07 15:59:11
708
原创 <编程之美>求一个整数的二进制表示1的个数
方法一:最最容易想到的方法,先加上二进制最后一位,通过&1可以得到,然后原数除以二int getCount(int number){ int ans = 0; while(number) { ans += num&1; num >>=1; } return ans;}方法二:如何消除最后一个1呢,这里我们想到,如何判断一个数是不是2的整数次幂呢,分析一下规律,如
2012-09-05 09:09:42
1597
转载 三种线性排序算法 计数排序、桶排序与基数排序
转自:http://www.byvoid.com/blog/sort-radix/[非基于比较的排序]在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。基于比较的排序算法是不能突破O(NlogN)的。简
2012-09-03 17:07:49
626
原创 python ftp 下载
刚学习了《python核心编程》的第十七章,ftp编程,写了一个小脚本下载ftp网站上的全部文件,还没学习多线程编程,后面要给加上多线程下载。from ftplib import FTPimport reimport oshost = 'ftp.neu.edu.cn'dir_path = '/ebook/python'def get_filename(string): pa
2012-08-27 21:44:17
1175
原创 python socket编程 半双工聊天
服务器端:#!/usr/bin/pythonimport socketfrom time import ctimeimport sysbufsize = 1024host = '127.0.0.1'port = 8100address = (host,port)server_sock = socket.socket(socket.AF_INET,socket.SOCK_
2012-08-27 16:28:36
2045
原创 《编程之美》小飞的电梯调度算法
亚洲微软研究院所在的希格玛大厦一共有6部电梯。在高峰时间,每层都有人上下,电梯每层都停。实习生小飞常常会被每层都停的电梯弄的很不耐烦,于是他提出了这样一个办法:由于楼层并不算太高,那么在繁忙的上下班时间,每次电梯从一层往上走时,我们只允许电梯停在其中的某一层。所有乘客从一楼上电梯,到达某层后,电梯停下来,所有乘客再从这里爬楼梯到自己的目的层。在一楼的时候,每个乘客选择自己的目的层,电梯则计算出
2012-08-27 10:18:09
10488
1
转载 python 处理命令行参数
转自:http://blog.csdn.net/byrsongqq/article/details/5623357本篇将介绍python中sys, getopt模块处理命令行参数如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢?需要模块:sys参数个数:len(sys.argv)脚本名: sys.argv[
2012-08-26 16:18:08
4326
原创 由《编程之美》光影切割问题引出的-----求数组逆序数
编程之美1.7的一道光影切割问题,经过分析之后,可以简化为一个求逆序数的问题,当然求逆序数可以用非常暴力的O(N^2)的解法,但是,如果你正在接受一个面试,给出了O(N^2)的解法的话,面试官一定不会满意,对你的印象也大打折扣,所以这里主要是讲解一些求逆序数的一些高效方法。以poj上的一道题目为例http://poj.org/problem?id=2299方法一:分治算法我们知道排序中
2012-08-25 18:28:44
2297
1
原创 python 核心编程第十一章 13题
分别用不同的方法去实现阶乘,并且用装饰器去计算不同的阶乘的时间,实现很简单,就是装饰器那里有点模糊,装饰函数里面一定要返回装饰器内嵌函数的函数对象。还ti有一点就是time.clock()和time.time()表示什么,C里面clock表示cpu的时钟数,然后通过CLOCKS_PER_SEC计算时间,而python里面貌似没有这么个data,clock表示什么呢,不懂,求解。。#!/usr/
2012-08-09 09:15:50
1243
原创 编程珠矶 第十三章 位图的实现
位图就是用一个比特位去表示一个整数,该位为1,表示此数存在,该为为0,表示此数不存在。使用位图会节省空间,并且查询,插入操作都是O(1)的,效率极高,当然,如果你设置map的类型为unsigned char *,也是可以的,只不过这时候SHIFT = 3, MASK = 0x7#include#includeusing namespace std;#define BITSPER
2012-08-06 21:16:49
1013
原创 c 语言实现全排列和组合
求全排列的话有两种方法:方法一:利用递归,将一个排列看成是以一个数开头+另外一个子排列, 例如数组list[n]的全排列,以list[i]表示以元素list[i]开头的一个排列,所以所有的排列数为list[0]+list[1]+list[2].......list[n-1], 以list[i]为首元素的排列可以看成是list[i] 为首,加上另外n-1个元素排列的排列。这里每次以lis
2012-08-06 15:32:45
1809
原创 编程珠玑第十二章 生成有序随机序列
编程珠玑第十二章的主题是给定0-n-1共n个数,生成m(m方法一:最容易想到的就是利用C++中的set容器,不断向set中插入rand()%n的数,直到set的size为M,break即可,set容器会自动将元素排序方法二:是书上给的解法,扫描数组[0,n),然后令remaining = n,select = m,每次成功选择一个数i,则select -1,每次循环remaining--;
2012-08-06 10:39:38
1363
原创 编程珠玑 第十一章 第9题 从数组中找出第K小的数
求中位数那题是知道题的特例,求第K小的数,利用快排的划分思想,时间复杂度O(N+N/2+N/4....) = O(N)void swap(int *a,int *b){ int temp = *a; *a = *b; *b = temp;}void qselect(int *list,int left ,int right, int K) // index is K,not th
2012-08-03 14:54:28
1271
原创 编程珠玑 第十一章 第 六题 选择排序和希尔排序
选择排序很简单,就是每次从i--N的位置找出最小(最大)的元素放在i处,时间复杂度O(N^2)希尔排序是插入排序的变形,插入排序就是从第二个元素开始,第i个元素前面的自序列已经是有序的,只要将i元素插入到0-i适当的位置即可,最好情况下是元素list[i]>list[i-1],即不需要移动,最好情况下是数组本来有序,时间复杂度O(N). 希尔排序就是插入排序的增亮模型,通过设置增量减少元素的移
2012-08-03 14:26:15
550
原创 编程珠玑 第十一章 第一题 找中位数
第一题求最小值、最大值和均值显然不用排序,只需要扫描一遍数组即可。关于中值,换个思路思考,就是找排好序的数组中的index为N/2的数,所以方法出来了方法一:先对数组进行排序,然后直接得到arr[N/2]即为索求的中位数,时间复杂度为O(nlgn),在这里面如果调用库函数qsort的花费的时间会比自己去写一个排序函数花费更多的时间,qsort最好情况为O(nlgn),所以可以用其他一些严格O(
2012-08-03 12:40:10
1767
原创 python核心编程 第八章 第10题
很简单#!/usr/bin/pythondef check(string): spe = ['a','i','e','o','u'] special = len([ch for word in string.split() for ch in word if ch in spe]) normal = sum([len(word) for word in string.split()]
2012-08-01 12:49:24
678
原创 编程珠玑 第九章 第7题 获取一个字节序列中1的个数
首先对于每一个字节中,获取这个字节中1的个数,当然,不能将这个unsiged char 值转换成二进制数,然后再去统计1的个数,这种方法效率相当低下,这样就会想到位运算,位运算的一种好方法是利用 x &=x-1的方法,进行多少次计算,就有多少个1,然后对于一个字节,将每一个数(0-255)的1的个数存进一个数组,这样以后每取出一个字节,可以直接找到这个字节1个数。int get_count(u
2012-07-31 10:36:58
721
原创 编程珠玑 第九章 第六题 (isdigit \ isupper\islower)的实现
这个实现主要有两种方法,一种是利用宏定义,一种是利用HASH表,宏定义需要判断,其实效率都差不多,HASH主要是利用了位运算#include#include/* *method No_1, macro definition */#define isdigit(x) ((x)>='0' && (x)<='9')#define isupper(x) ((x)>='A' && (x)
2012-07-31 10:00:39
839
原创 python 核心编程 第七章 第八题
#!/usr/bin/pythonmy_dict = {}options =["A","a","D","d","Q","q"]id = 0while True: print "(A)dd:" print "(D)elete:" print "(Q)uery:" string = raw_input("input your select\n>>>") if string no
2012-07-30 21:38:51
734
原创 python 核心编程 第六章 习题16 矩阵加法和乘法
很简单,但是写的有点复杂感觉,有没有朋友有简单一些的方法,还请不吝赐教~#!/usr/bin/python def mar_add(list1,list2): m = len(list1) n = len(list1[0]) if m!= len(list2): print "error ! two list must have same dimson" return if
2012-07-30 19:37:31
3562
原创 编程珠矶 第八章 第十三题 子矩阵最大和
参考:http://acm.hdu.edu.cn/showproblem.php?pid=1081#include#include#include#define NUM 110int get_max(int x,int y){ return x>y?x:y;}intmain(void){ int N; int list[NUM][NUM]; while(sca
2012-07-29 11:33:22
1287
原创 编程珠矶 第八章 第10题 寻找最接近0和t的子向量
关于找出总和最接近0的子向量,课后习题解答已经给出了解决方案,时间复杂度为O(nlgn), 这道题目不能用dp解决的原因是:总的最优并不能通过最优子结构来获得,举个例子向量 -9 -8 -7 -6 -5 -4 -3 -2 -1 45, 到-1的时候,最优解为 -1,但是通过-1并不能获得下一个元素的最优解,很显然,当值为45时,最优解为0,全部元素相加,但是并不能通过前面元素最优解 -1 得
2012-07-28 18:55:56
1467
转载 动态规划详解III
本文章转载自http://yzfy.org/dis/listpost.php?tid=780,作者 macaroniz动态规划详解 第三章 这一章,我们来学习树形动态规划。动态规划一般来说分为四大类:线性动态规划,区间动态规划,树形动态规划和特殊种类动态规划。因为线性模型和区间类模型紧密相关,所以一般我们将这两种类型放在一起学习。树形动态规划和以上两种不同,它是在一
2012-07-28 15:04:15
702
转载 动态规划详解II
本文章转载自http://yzfy.org/dis/listpost.php?tid=780,作者 macaroniz动态规划详解 第二章 通过上一章的学习,相信大家对动态规划已经有了一个初步的了解,如果您将上一章的推荐习题全部掌握,那么您可以开始这一章的学习内容了。这一章,我们将讲解一些动态规划的设计技巧。相信大家在做动态规划一类题目的时候,往往不容易看出来这道题目是动态
2012-07-28 15:03:16
625
转载 动态规划详解I
本文章转载自http://yzfy.org/dis/listpost.php?tid=780,作者 macaroniz动态规划详解 第一章 首先让我们看一个例子:例1:如下图有一个数字三角阵,请编一个程序计算从顶点至底的某处的一条路径,使该路径所经过的数字的和最大。每一步可沿左斜线向下或右斜线向下走。 7
2012-07-28 15:01:36
694
原创 编程珠矶 第八章 第9题
很简单,只要当前sum>0时候就把x[i]加上,sum[i]#include#include#include#define GET_MAX(x,y) ((x)>(y)?(x):(y))#define MAX_NUM 10000int list[MAX_NUM];/* *method 1 divide and conquer */int get_max_sum(int *
2012-07-28 10:30:59
562
原创 编程珠矶 第八章 第四题
这道题目个人认为应该用随机算法多次模拟最后求平均这样的方法来做,这里面有两个问题,一个是模拟的数组应该是开多大,而是测试用例要弄多少次,测试用例的次数当然是越多越好,而数组里面元素的个数直接影响最后的期望值,大概1个元素期望是0--1的期望,然后期望和元素个数应该是个线性的关系。如果我的程序有什么错误之处,还请大家赐教!#include#include#include#include#in
2012-07-28 09:27:32
659
原创 python 核心编程练习 6--3
6–3. 排序(a) 输入一串数字,从大到小排列之.(b) 跟a 一样,不过要用字典序从大到小排列之def cmp_func(x,y): return cmp(y,x)# sort by numberstring = raw_input("input numbers:\n")num_list = [int(x) for x in string.split()]num_li
2012-07-26 19:19:53
812
原创 python核心编程 第六章练习6-2
6–2. 字符串标识符.修改例6-1 的idcheck.py 脚本,使之可以检测长度为一的标识符,并且可以识别Python 关键字,对后一个要求,你可以使用keyword 模块(特别是keyword.kelist)来帮你.import stringfrom keyword import iskeywordnums = string.digitscharacters = string.l
2012-07-26 18:59:37
901
转载 grep 与正则表达式
转自:http://apps.hi.baidu.com/share/detail/34694903首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;在以前上班的公司里,由于公司是基于w
2012-07-24 22:19:36
425
转载 grep、sed、awk、perl等对正则表达式的支持的差别
转自:http://cache.baidu.com/c?m=9d78d513d99601f81afa940f1a60d3716a5197133dc0a61168d5e35fe5634c35317195bd30561013d2b56b1702b83e2afd803065407737c6e8dff83cc9fcd27620d26172320b87320fce43f4dc46529173cb0caeb8
2012-07-24 22:17:53
916
原创 python 核心编程 课后习题 9—3
文件信息. 提示输入一个文件名, 然后显示这个文本文件的总行数ile_name = raw_input("please input the file_name:\n")fp = open(file_name,"r")totalLines = 0for eachline in fp: totalLines += 1print totalLinesfp.close()
2012-07-16 10:25:15
649
原创 python 核心编程 课后习题 9—2
文件访问. 提示输入数字 N 和文件 F, 然后显示文件 F 的前 N 行. 1 str = raw_input("please input N and F:\n") 2 3 N,F = str.split() 4 N = int(N) 5 6 fp = open(F,"r") 7 8 count = 0; 9 for eachline in fp:
2012-07-16 10:16:49
586
原创 第九章 练习题 9—1
直接贴附加题代码: 1 file_name = raw_input("please input the file name\n") 2 3 fp = open(file_name,"r") 4 5 for eachline in fp: 6 if eachline[0] == '#' or eachline[0] == '\n':
2012-07-16 10:06:56
583
原创 编程珠矶 习题 4.6 利用二分搜索找到一个数在顺序数组里面的下限和上限
很显然,这道题目用二分搜索去解答,关键是怎么样去找这个上限点和下限点,方法很简单,每次去mid, 如果aa[mid] 比key要大的话,那么mid 是key的一个上限,但不一定是最小上限,同理。。。那么不断二分,不断逼近,最后即可求得解void search_between(int arr[], int n_size, int *up, int *down,int key){ int left
2012-07-14 15:41:59
713
原创 编程珠矶 4.6 习题 2 二分搜索第一次出现的key
这个应该是很简单的了,我们每次查找mid的时候,如果a[mid] == key , 并且 left == right, 则这个index 就是要求的下标, 如果left != right ,则令right = mid ,正常的搜索,这里应该直接返回,因为要求的是第一次出现的下标,所以第一次出现的或者为此时mid的位置,或者为Mid往左的位置,这也就是为什么只有档left == right 时才能返
2012-07-14 12:10:08
685
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人