2012年10月26日

摘要: 编辑距离问题时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:60 测试通过:19描述设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括(1)删除一个字符;(2)插入一个字符;(3)将一个字符改为另一个字符。将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,B)。试设计一个有效算法,对任给的2个字符串A和B,计算出它们的编辑距离d(A,B)。对于给定的字符串A和字符串B,编程计算其编辑距离d(A,B)。 输入输入数的第一行是字符串A,文件的第二行是字符串B。输出输出编辑距离d 阅读全文
posted @ 2012-10-26 17:15 kaka_ 阅读(4063) 评论(0) 推荐(0) 编辑

2012年9月22日

摘要: 题目:(见于《算法导论》原书第二版P23,2.3-7请给出一个运行时间为O(nlgn)的算法,使之能在给定的一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在两个其和等于x的元素。分析:题目明确给出要求运行时间为O(nlgn),这样的话,首先想到的枚举算法行不通,因为在不存两数之和为x的时候,其时间复杂度为O(n^2)。再考虑另外的算法,对于这个问题,不妨首先对数组进行排列,而排列可以做到运行时间为O(nlgn)的时间界,排序好,然后再来个二分搜索,二分搜索的时间复杂度也是O(nlgn),这样看来,总的看来,时间的复杂度可以满足题目要求。具体的代码如下: 1 #include< 阅读全文
posted @ 2012-09-22 21:11 kaka_ 阅读(635) 评论(0) 推荐(0) 编辑
摘要: 题目:(见于《算法导论》原书第二版P22,2.3-4)插入排序可以如下改成一个递归过程:为排序A[1…n],首先递归地排序A[1…n-1],然后再将A[n]插入到已排序的数组A[1…n-1]中去。对于插入排序的这一递归版本,为它的运行时间写个递归式。在看《算法导论》之前,从来没有想过使用递归的方式实现插入排序。此前对于插入排序,很容易就想到了这段代码: 1 void insertsort(vector<int> a, int n) 2 { 3 int i,j,temp; 4 for(i=1; i<n; i++) 5 { 6 temp=a[i]; 7 ... 阅读全文
posted @ 2012-09-22 19:27 kaka_ 阅读(989) 评论(0) 推荐(0) 编辑

2012年9月19日

摘要: 问题描述:一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如第6页用6表示,而不是06或006。数字统计问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1,2,3,…,9。编程任务:给定表示书的总页码的十进制整数n(1<<n<<109)。编程计算书的全部页码中分别用到多少次数字0,1,2,3,…,9。数据输入:输入数据由文件名input.txt的文本文件提供。每个文件只有1行,给出表示书的总页码的整数n。结果输出:程序运行结束时,将计算结果输出到文件output.txt中。输出文件共有1 阅读全文
posted @ 2012-09-19 00:27 kaka_ 阅读(1696) 评论(0) 推荐(0) 编辑

2012年8月18日

摘要: 冒泡排序中是计算机的一种简单的排序方法,此方法时间复杂度为O(n^2).现在对于冒泡排序使用这几天上手的python来实现一下。算法的代码如下:1 def bubble_sort(data):2 length = len(data)3 for i in range(len(data)-1):4 for j in range(len(data)-1):5 if (data[j]>data[j+1]):6 tmp=data[j]7 data[j]=data[j+1]8... 阅读全文
posted @ 2012-08-18 17:13 kaka_ 阅读(3532) 评论(1) 推荐(0) 编辑
摘要: 算法描述:一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置 ⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 ⒌ 将新元素插入到下一位置中 ⒍ 重复步骤2具体请看:插入排序简介:http://baike.baidu.com/view/396887.htm1 def insertion_sort(data):2 for i in range(1, len(data)):3 ... 阅读全文
posted @ 2012-08-18 17:10 kaka_ 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 刚刚在CSDN论坛看到一个帖子:在一个日志文件中,如何使用C/C++标准库读取一个范围内的记录?比如:读取在2012-08-10 01:10:23至2012-08-10 01:15:55之间的记录....................2012-08-10 01:10:23 200 9.26.107.207 2012-08-10 01:10:55 220 9.26.89.201 2012-08-10 01:12:15 120 9.26.107.112 2012-08-10 01:15:55 120 9.26.87.16 ....................如何利用lseek()读取两个时间 阅读全文
posted @ 2012-08-18 16:49 kaka_ 阅读(238) 评论(1) 推荐(1) 编辑
摘要: 这个程序管理用于登录系统的用户信息:登录名字和密码。登录用户账号建立后,已存在用户可以用登录名字和密码重新返回系统,新用户必须登记注册。《python核心编程》里给出的示例代码如下: 1 #!/usr/bin/env python 2 3 db = {} 4 5 def newuser(): 6 prompt = 'login desired: ' 7 while 1: 8 name = raw_input(prompt) 9 if db.has_key(name):10 prompt = 'name taken, t... 阅读全文
posted @ 2012-08-18 14:06 kaka_ 阅读(779) 评论(0) 推荐(1) 编辑

2012年8月16日

摘要: 今天重新收拾了自己的思绪,反思了这个暑假以来在学习python,然而学的真的不怎么样。缺少练习,导致忘记了很多重要的内容。昨天在一些博客上看了很多文章,而且把一直自己没有成功完成的东西做出来了。今天早上,重新再看python的基础知识,感觉自己还是对于这些知识很陌生,需要用的时候还是需要翻书查阅,还是先注重基础吧——我要重新把python的教程阅读一遍,把以前自己忽略的部分学习,加强练习和记忆。现在读到了列表(list)、元组(tuple)、集合(set)和字典(dict)四种在python内置的重要的数据结构。我只是想记录一下列表(list)和元组(tuple)比较容易搞混的地方和阐述一遍列 阅读全文
posted @ 2012-08-16 17:42 kaka_ 阅读(45099) 评论(2) 推荐(1) 编辑

导航