搜索

搜索是指从元素集合中找到特定元素的算法过程。搜索通常返回 True 或 False, 分别表示元素是否存在;或者返回目标元素的位置。

顺序搜索

存储于列表等集合中的元素彼此存在线性或顺序的关系,每个元素的位置与其他元素相关。在 Python 列表中,元素的位置就是它的下标。因为下标是有序的,所以能够顺序访问,由此可以进行顺序搜索。

Read more »

递归

递归(Recursion)是解决问题的一种方法,它将问题不断地分成更小的子问题,直到问题可以用普通的方法解决。通常情况下,递归会使用一个不停调用自己的函数。

递归三原则

  • 递归算法必须有基本情况
  • 递归算法必须改变其状态并向基本情况靠近
  • 递归算法必须递归地调用自己

用递归解决汉诺塔问题:

Read more »

什么是线性数据结构

对于某种数据集合,一旦某个元素被添加进来,它与前后元素的相对位置保持不变,这样的数据集合就被称为线性数据结构。

线性数据结构可以看做有两端。这两段可以被称为”左端””右端”,有时候也被称为”前端””后端”或者”顶端””底端”。

栈有时候也被称为”下推栈”,是一个有序集合。添加操作和移除操作总发生在顶端。栈是后进先出(LIFO)的集合。

Python 的 list 方法使得列表作为堆栈非常容易:

Read more »

在中实现了用 Python 将当前时间复制到剪切板中。这篇文章将进一步实现在 Windows 桌面右键菜单中加入这个功能。

首先是 Python 实现:

1
2
3
4
5
6
7
8
import time, pyperclip

def get_time():
time_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
pyperclip.copy(time_str)

if __name__ == '__main__':
get_time()

保存以上代码为 get_time.pyw.

Read more »

处理数据时偶尔会遇到某列中有包含多个值,用逗号或其他分隔符分割,如下表:

1
2
3
4
5
6
7
+-------------------------------------+------------+
| Company | Field |
+-------------------------------------+------------+
| [UBC, GoldmanSachs, Morgan Stanley] | Finance |
| [Amazon, Microsoft, Huawei] | Technology |
| [Pfizer] | Pharma |
+-------------------------------------+------------+
Read more »

我们有时候会用日期+时间来做后缀名来管理不同版本的同一份文件,而手动输入日期过于繁琐。我们可以做一个脚本自动把当前时间复制到剪切板,用到的时候直接粘贴。

用 Python 实现要用到 datetime(内置) 和 pyperclip 两个库。 pyperclip 的用法很简单:

1
2
pyperclip.copy("Ayey!") # 将 'Ayay!' 写入剪切板
pyperclip.paste() # 读取剪切板的内容

简单的实现过程

Read more »

准备工作

Sublime Text3
Tex Live 2018
LaTexTools
SumatraPDF

安装 Tex Live 2018

在 Windows 10 中可以右击下载的 ISO 文件选择”挂载”(非 Windows 10 系统可以用 Winrar 等工具解压该文件),然后以管理员身份运行 install-tl-windows.bat 脚本。

在出现的 GUI 界面中选择合适的配置,安装(一般情况下默认配置即可;习惯用 Texworks 可以保留该编辑器)。

Read more »

从 B 站下载了一套 C++程序设计课程,发现下载到本地的视频文件名过于冗长,类似于:
“清华大学C++自主学习教程(推荐1.5倍速食用) - 16.2-4-2逗号运算、关系运算、逻辑运算和条件运算(Av20786390,P16).Flv”
我们想把文件名精简为”2-4-2逗号运算、关系运算、逻辑运算和条件运算.Flv”。

Read more »

Windows 10 10.0.17134 教育版更新后发现原来的小娜关闭了,原来小娜圆环的位置变成了放大镜图标,默认只有搜索功能。

解决方法如下:

打开注册表编辑器,定位到:

1
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Search

在右侧窗格中找到 BingSearchEnabled 值,如果没有则新建一个 DWORD(32位)值,命名为 BingSearchEnabled,并将该值的数值数据设置为 1;

用同样的方法检查有没有 CanCortanaBeEnabled 值以及 CortanaConsent ,如果没有则新建DWORD(32位)值,命名并将数值数据设置为 1。

关闭注册表编辑器后重启 Windows 资源管理器,Cortana 应该已经回来了。

所需安装包

Sublime Text3
Codeblocks(mingw-setup)

安装与配置

分别安装 Sublime Text 和 Codeblocks,并且把 Codeblocks 安装目录下 MinGW 文件夹目录添加到环境变量中。

配置 Codeblocks:Setting –> Compiler,在“Have g++ follow the C++14 ISO C++ language standard [-std=c++14]” 选项上打勾、保存。

配置 Sublime Text:Tools –> Build System –> New Build System

粘贴下面的代码(注意 CodeBlocks 的目录):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"cmd": ["g++", "-std=c++14","${file}", "-o", "${file_path}/${file_base_name}.exe"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c++",
"encoding": "cp936",
"shell": true,
"variants":
[
{
"name": "Run",
"cmd": ["start","~/CodeBlocks/cb_console_runner.exe","${file_path}/${file_base_name}"]
}
]
}

保存为 C++.sublime-build.