自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机程序设计艺术习题解答(Excercise 1.2.3-30~34题)

计算机程序设计艺术习题解答(Excercise 1.2.3-30~34题)

2022-11-23 12:49:11 362 1

原创 计算机程序设计艺术习题解答(Excercise 1.2.2-28~30题)

对 Donald Knuth 的名著 计算机程序设计艺术 的重要习题进行详细的推导和解答

2022-09-05 14:50:59 339

原创 计算机程序设计艺术习题解答(Excercise 1.2.2-27题)- 求对数标准算法的有限精度误差估计

对 Donald Knuth 的名著 计算机程序设计艺术 的重要习题进行详细的推导和解答

2022-08-24 12:39:07 154

原创 计算机程序设计艺术习题解答(Excercise 1.2.2-25题)

计算机程序设计艺术一书中习题的详细解答,后续会慢慢更新系列文章

2022-08-17 13:49:31 400

原创 Go 指南 -- 练习:Web 爬虫

练习:Web 爬虫在这个练习中,我们将会使用 Go 的并发特性来并行化一个 Web 爬虫。修改 Crawl 函数来并行地抓取 URL,并且保证不重复。提示:你可以用一个 map 来缓存已经获取的 URL,但是要注意 map 本身并不是并发安全的!在网络上已经能找到好几种答案了,有的甚至用上了信道(channel)来帮助实现。我在这里提供的是一种简单明了的实现:package ...

2019-07-03 20:07:21 1882 1

原创 Python类与对象学习心得-10:简化数据结构的初始化 __init__()

你写了很多仅仅用作数据结构的类,这时定义大量的 __init__() 函数变成了一件很烦人的工作。为了简化,我们可以在一个基类中写一个公用的 __init__() 函数:import mathclass Structure1: # Class variable that specifies expected fields _fields = [] def __i...

2019-06-09 12:19:28 373

原创 Python类与对象学习心得-8:处理属性的重要属性和函数

1. 影响属性处理方式的 3 种特殊属性__class__对象所属类的引用(即 obj.__class__,与 type(obj) 的作用相同)。Python 的某些特殊方法,例如 __getattr__,只在对象的类中寻找,而不在对象实例中寻找。__dict__一个字典(映射),存储对象或类的可写属性。有 __dict__ 属性的对象,任何时候都能随意设置新属性。如果类有 __s...

2019-06-06 21:56:13 261

原创 Python类与对象学习心得-9:使用延迟计算属性

延迟计算属性是一种只读属性,只在访问的时候才会计算结果。但是一旦被访问后,结果值就被缓存起来,不用每次都去计算了。定义一个延迟属性的一种高效方法是使用一种特殊的描述符类(descriptor),如下所示:class lazyproperty: def __init__(self, func): self.func = func def __g...

2019-06-05 22:27:29 258

原创 Python类与对象学习心得-7:创建一种新的类属性或实例属性(descriptor)

如果想创建一种全新的实例属性,自带一些额外功能(比如类型检查),你可以通过一个描述符类(descriptor)的形式来定义它的功能。描述符是对多个属性运用相同存取逻辑的一种方式,它是实现了特定协议的类,这个协议包括 __get__,__set__ 和 __delete__ 方法。特性(property)类实现了完整的描述符协议。通常,一个描述符类可以只实现其中部分协议。其实,我们在真实的代码中见到...

2019-06-05 16:49:32 374

原创 Python类与对象学习心得-6:在子类中扩展 property

前面已经介绍了在 Python 中特性(property)的用法。这里介绍下在子类中如何扩展定义在父类中的特性(property)的功能。考虑如下的代码,它定义了一个特性(property):class Person: def __init__(self, name): self.name = name # Getter function @pr...

2019-06-05 13:04:29 214

原创 Python类与对象学习心得-5:子类中调用父类的某个方法

如果要在子类定义中调用某个父类(超类)定义的方法,可以使用 super() 函数,比如:class A: def spam(self): print('A.spam')class B(A): def spam(self): print('B.spam') super().spam() # Call parent spam()...

2019-06-05 10:28:22 1318

原创 Python类与对象学习心得-4:创建可管理的属性 - 特性(property)

有时你想给某个实例属性增加除访问与修改之外的其他处理逻辑,比如类型检查或合法性验证。一种简单方法是将它定义为一个特性(property)。例如,下面的代码定义了一个特性,对一个属性做简单的类型检查:class Person: def __init__(self, first_name): self.first_name = first_name # Gett...

2019-06-04 17:29:34 371

原创 Python类与对象学习心得-3:类的访问控制

Python 程序员并不依赖语言特性去封装数据,而是通过遵循一定的属性和方法命名规范来达到这个效果。第一个约定是任何以单下划线 _ 开头的名字都应该被认定为内部实现。比如:class A: def __init__(self): self._internal = 0 # 一个内部属性 self.public = 1 # 一个公共属性 d...

2019-06-04 10:56:36 322

原创 Python类与对象学习心得-2:创建大量对象时节省内存的方法

如果你的程序要创建大量(可能上百万) 的对象,可能导致占用很大的内存,因为每个对象实例都保存自己专有的 __dict__ 字典。由于 Python 的字典采用散列表存储(类似于稀疏数组),它必然需要消耗额外的内存空间。对于主要是用来当成简单的数据结构的类而言,你可以通过给类添加 __slots__ 属性来极大地减少对象实例所占的内存。比如:class Date: __slots_...

2019-06-03 21:48:14 876

原创 Python类与对象学习心得-1:让对象支持上下文管理协议

为了让一个对象兼容with 语句,你需要实现它的__enter__() 和__exit__() 方法。例如,考虑如下的一个类,它能为我们创建一个网络连接:from socket import socket, AF_INET, SOCK_STREAMclass LazyConnection: def __init__(self, address, family=AF_INET, ...

2019-06-03 20:22:30 221

原创 Effective Python 读书笔记 - 第27条:多用public属性,少用private属性

与C++和Java不同的是,对Python类来说,其属性的可见度只有两种,也就是public和private。class MyObject(object): def __init__(self): self.public_field = 5 self.__private_field = 10 def get_private_field(sel...

2019-06-02 20:30:24 376

原创 Effective Python 读书笔记 - 第26条:只在使用 Mix-in组件制作工具类时进行多重继承

Python是面向对象的编程语言,它提供了多重继承的代码复用机制。但是,我们应该尽量避免使用多重继承。如果一定要利用多重继承所带来的便利及封装性,那就考虑用它来编写mix-in类。mix-in是一种小型的类,它只定义了其他类可能需要提供的一套附加方法,而不定义自己的实例属性。此外,它也不要求使用者调用自己的__init__()构造器。由于Python程序可以方便地查看各类对象的当前状态,所...

2019-05-28 10:46:36 253

原创 算法导论 - 2.3-7 确定集合S中是否存在两个其和刚好为x的元素

描述一个运行时间为O(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素。这里给出两种算法,都要求先用归并排序算法(merge sort)把集合S中元素从小到大排好序,这一步运行时间为O(nlgn)第一种算法比较简单,即对集合S中每一个整数a,利用二分搜索法(Binary Search)在排好序的集合S中搜索(x - a)是否存在,如果存在...

2018-08-28 20:14:16 1292

原创 算法:墙上的门

墙上的门你面前是一堵朝两个方向无限延伸的墙。墙上有一扇门,但你不知道离你有多远,也不知道门位于哪个方向。你只有走到这扇门前才能看到它。假设从当前位置走到门前要走n步(事先并不知道n的大小),请设计一个算法,使你最多走O(n)步就能遇到门。([Par95])解法:首先,以当前位置为原点,门距离原点有n步(n未知),而且门位于哪个方向也不知道,所以不能只朝一个方向去找,万一选错方向就永远找...

2018-08-23 20:24:18 4099 1

原创 算法:带锁的门

带锁的门在走廊上有n个带锁的门,从1到n依次编号。最初所有的门都是关着的。我们从门前经过n次,每次都从1号门开始。在第i次经过时(i = 1,2,..., n)我们改变i的整数倍号锁的状态;如果门是关的,就打开它;如果门是打开的,就关上它。在最后一次经过后,哪些门是打开的,哪些门是关上的?有多少打开的门?解法:这道题需要统计从1到n每个数的因子个数(包括1和自身),每个数的因子个数决定...

2018-08-23 16:10:54 4591

原创 算法:更轻或者更重?

这是出现在Anany Levitin所著的《算法设计与分析基础》第三版习题2.2中的一道算法题:更轻或者更重?你有n (n > 2)个外观相似的硬币和一个没有砝码的天平。其中一枚为假币,但不知道它比真币重还是轻。设计一个O(1)的算法来确定假币比真币重还是轻。解法:题目只是要求确定假币比真币重还是轻,并不要求找出这枚假币,n的数量不确定(n>=3),在绝大多数情况下只需...

2018-08-23 15:12:44 1304

原创 反片语(Ananagrams, UVa 156)

输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词。在判断是否满足条件时,字母不区分大小写,但在输出时应保留输入的大小写,按字典序进行排列(所有大写字母在小写字母的前面)。样例输入:ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Rides dealer...

2018-07-26 19:31:13 207

原创 安迪的第一个字典(Andy‘s First Dictionary,UVa10815)

输入一个文本,找出所有不同的单词(连续的字母序列),按字典序从小到大输出,单词不区分大小写。要点:利用stringstream的特点 将分离出的单词插入set<string>,set会对所有元素自动排序且保证唯一。#include<iostream>#include<string>#include<set>#include<...

2018-07-26 18:53:29 718

原创 木块问题(The Blocks Problem, UVa101)

从左到右有n个木块(编号为0~n-1),要求模拟以下4种操作(下面的a和b都是木块编号)。move a onto b:把a和b上方的木块全部归位,然后把a摞在b上面 move a over b:把a上方的木块全部归位,然后把a放在b所在木块堆的顶部 pile a onto b:把b上方的木块全部归位,然后把a及其上方的木块整体摞在b上面 pile a over b:把a及其上方的木块整体...

2018-07-26 18:23:14 744 1

原创 师兄帮帮忙 UVa 12412

原题很长,就此略过了https://vjudge.net/problem/UVA-12412#author=0这道题看似是一道简单的家庭作业题,其实非常容易出错,且调试时间很长。主要的难点在于:1. 增加学生成绩记录时调整好整个学生列表的排名Rank值,不用排序2. 删除学生成绩记录后需要调整学生排名3. 如何快速高效生成统计数据#include<stdio.h&g...

2018-07-26 13:31:43 333

原创 例题4-5 追踪电子表格中的单元格(Spreadsheet Tracking, ACM/ICPC World Finals 1997, UVa512

Data in spreadsheets are stored in cells, which are organized in rows (r) and columns (c). Some operations on spreadsheets can be applied to single cells (r, c), while others can be applied to entire ...

2018-07-25 10:53:19 580

原创 周期串(Periodic Strings,UVa455)

455 Periodic Strings A character string is said to have period k if it can be formed by concatenating one or more repetitions of another string of length k. For example, the string ”abcabcabcabc” has ...

2018-07-22 20:58:14 260

原创 数数字(Digit Counting, ACM/ICPC Danang 2007, UVa1225)

1225 Digit CountingTrung is bored with his mathematics homeworks. He takes a piece of chalk and starts writing a sequence of consecutive integers starting with 1 to N (1 < N < 10000). After th...

2018-07-22 19:32:12 543

原创 分子量(Molar Mass, ACM/ICPC Seoul 2007, UVa1586)

给出一种物质的分子式(不带括号),求分子量。本题中分子式只包含4种原子,分别为C,H,O,N,原子量分别为12.01, 1.008, 16.00, 14.01(单位:g/mol)。例如,C6H5OH的分子量为94.108 (g/mol)。本题要注意区分原子后不带数量(缺省数量为1)和带数量两种情况。#include<stdio.h>#include<string.h&...

2018-07-22 17:36:01 283

原创 UVa1585 统计OX组成的字符串的得分

习题3-1 得分(Score, ACM/ICPC Seoul 2005, UVa1585)给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0。例如,OOXXOXXOOO的得分为1+2+0+0+1+0+0+0+1+2+3 = 10#include<stdio.h>#include<string.h>#defi...

2018-07-22 15:22:59 876

空空如也

空空如也

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

TA关注的人

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