自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tiko.T的部落格

知己难求,不如自己写。

  • 博客(28)
  • 收藏
  • 关注

原创 几个好玩有趣的Python入门实例

几个简单的Python实例,好玩有趣,基础语法。turtle库开始自己的绘画写一个属于自己的文本进度条蒙特卡洛方法计算π分形几何,Koch雪花曲线输入一组数据,进行简单的统计小说词频统计,统计三国演义中谁出场率最高轻松抓住文本主旨:文本词云生成drawing with turtle好玩有趣,入门级绘图库turtle,文档在此。文档中的实例:太阳花。fro...

2018-07-12 21:57:07 82696 2

原创 正则表达式入门

内容:如题 前置技能:None 参考教程:30分钟正则入门前言最近喜欢各种入门,这里入门一下正则表达式。字数很少比较水。字符串可以说是编程是遇到的最多的一种数据结构,也是最简单的数据结构,对字符串操作的需求可谓无处不在。给人阅读的文本可以看做字符串,内存中存储的特定编码序列可以看做字符串,一个网页的html文本是字符串,浏览器对html文本解析的过程是字符串处理,无论是编译...

2018-06-10 19:47:52 344

原创 The Linux Command Line

This passage is about getting started with GNU/Linux by reading The Linux Command Line. Chinese version is available here. It’s an excellent introductory book of Linux. No more talk, let’s just get it...

2018-06-03 21:01:31 572

原创 Python入门

Life is short, I use Python.版本:3.6 文档:The Python Language Reference 入门:廖雪峰Python教程 环境:Win 10 / Linux 安装:sudo apt install python基础hello,world!print('hello,world!')Python之禅>&g...

2018-06-03 11:30:58 463

原创 【write a toy cpu】实现

自上大学开始,很早就听说过了CPU这个东西,唯一知道的是:这个东西很复杂,这个东西是计算机的核心,这个东西集成电路做的,而且主要应该是数字集成电路做的,就是说主要进行的是0和1的操作。但对内部工作原理还是一脸懵逼。众所周知,计算机的五个组成部分为运算器(数据通路)、控制器、存储器、输入/输出设备。而CPU的角色应该就是运算器与控制器,两者是结合而并非独立的。但内部呢?依旧不懂。而后有学过8086汇...

2018-05-20 15:12:27 857

原创 【write a toy cpu】环境搭建

这篇搭建开发环境,下一篇稍微详述实现过程。这两篇来源于看《自己动手写CPU》(作者博客)时写代码顺带写的笔记。这是一本非常棒的介绍cpu工作原理并且实践性很强的入门书籍,看完之后对CPU内部构造、MIPS指令集、流水线设计、Verilog编程都有了一定的了解。这本书倾向于实践,涉及到的理论部分的内容基本上仅限于《计算机组成与设计:硬件/软件接口》的第三章。开始看这本书的起因是偶然在github上浏...

2018-05-20 15:10:02 1157 4

原创 Brainfuck

Brainfuck 是一门非常简单甚至可以说是最简单的编程语言,wikipedia。它的语法由一个8个字符的字符集组成,即><+=.,[]八个字符。brainfuck的模型还包括一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。 这八个字符每一个都是一条指令: > 指针加一 < ...

2018-04-25 16:37:20 3798

原创 高效排序算法——希尔排序、堆排序、归并排序、快速排序

如标题,这里讨论的是基于比较的排序算法中最高效的三种算法和希尔排序。堆排序、归并排序、快速排序的平均时间复杂度均为O(NlogN)。前面有介绍过O(N2)的三种简单排序算法(见三大简单排序算法——插入、选择、冒泡),其中实际表现最好的要属希尔排序。可以证明通过交换相邻元素来进行排序的任何算法都需要O(N2)的平均时间,其中插入排序虽然不是通过交换来排序,但是可以等价为交换的操作,依然是O(N2)。...

2018-04-09 22:07:22 4615

原创 写一个简单的C++控制台游戏——扫雷

扫雷 MineSweeper用过Windows XP的用户一定不会忘记那一款有趣、烧脑(maybe)的扫雷游戏。(反正我是没有怎么玩过)这里将用C++控制台程序简单实现这个扫雷游戏。 Win7下的扫雷就是下面这个画风的:首先,我们分析以下这个游戏:地图由正方形小方块组成的矩形,每个小方块内要么有雷,要么没有雷随意点击一个方块开始,如果有雷,爆炸了,则游戏结束,没有爆炸则继...

2018-04-05 21:55:54 5063 2

原创 优先队列 & 堆

这里讨论堆。通常当我们谈论堆时,我们经常谈论的是二叉堆。但这并不是堆的全部。堆(heap),可以说是树(tree)的一种。参见下图:图中并不算十分完整,但也基本显示出的树的家族的轮廓。二叉树就不多说了。这次主要讨论二叉堆(binary heap)以及左偏树(leftist tree)。二叉堆是讨论过的(见基本数据结构–堆)。是看算法导论的时候写的(现在依然没有看完~)。那时没有实现优先队列...

2018-03-24 13:05:57 299

原创 AVL树

AVL树是一种带有自平衡性质的的二叉查找树,也就是说,在多次插入删除或者极端数据情况下依然可以保证O(logn)的操作复杂度。文章同步发布在个人博客,链接:AVL树。自平衡的二叉查找树上一篇中的二叉查找树在多次插入删除后,树的节点会向其中一边下沉,操作(插入/删除/查找)的复杂度会从O(logn)渐渐增大。在数据量很大时,操作时间可能变得不可接受。而且当建树的一组数据是已经排好序的...

2018-03-24 13:01:48 264 2

原创 哈希表

哈希表是一种 以常数平均时间执行插入、删除和查找操作的数据结构,但是哈希表一般不提供任何与排序相关的操作,如Findmax,FindMin,sort。哈希表散列表(Hash table,也叫哈希表),是根据关键字的值(Key value)而直接进行访问的数据结构。这里的关键字可能是数或者字符串。也就是说,通过将关键字的值映射到表中一个位置来查找。这个映射就做哈希函数,即有 Hash...

2018-03-20 19:44:22 316

原创 二叉查找树

简单介绍树,基础说多了也没什么意思,这里主要实现二叉查找树。树树,是一种非线性的数据结构,是一种特殊的(没有回路的)图,主要用在涉及到一个问题具有分支情况下的建模。树的若干定义都很简单,像父亲,儿子,根,兄弟,祖先,树叶,树枝,深度,高度等。在很多情况下,我们主要讨论二叉树(Binary Tree),也就是每一个节点最多只有两个子节点的情况。有一些比较特殊的二叉树值得讨论,比如:满二叉树:...

2018-03-17 21:06:54 214

原创 ALgorithms started

前言Algorithm入门,随便写一写,算法复杂度分析,和几个简单的问题——最大子序列之和、最大公因数、二分查找。复杂度分析常用记号O(f(n))O(f(n))O(f(n)),表示上界,Ω(f(n))Ω(f(n))\Omega (f(n))表示下界,Θ(f(n))Θ(f(n))\Theta(f(n))表示渐进。 一般情况下进行上界分析,也就是大O分析,有的情况下会进行复杂度的...

2018-03-14 16:09:30 296

原创 矩阵快速幂

快速幂快速幂算法很熟悉很容易理解,原理 nm={(n2)m/2(n2)m/2⋅nm为偶数m为奇数nm={(n2)m/2m为偶数(n2)m/2⋅nm为奇数n^m = \begin{cases} (n^2)^{m/2} & m为偶数 \\(n^2)^{m/2}\cdot n & m为奇数\end{cases} 二分可以将时间复杂度由O(n)O(n)O(n)降到O(logn)O(log⁡n)O(\...

2018-03-10 16:59:37 300

原创 【离散数学】高级计数技术

这是离散数学的第四篇,讨论高级计数技术。同步发布与个人博客,上一篇(【离散数学】计数/排列组合)讨论了计数以及排列组合,二项式定理等。但是仅凭排列组合等手段依然无法解决许多计数问题。这里首先讨论通过递推关系来求解计数问题,并介绍有递推关系引出的两个算法范式:动态规划和分治。这两种算法均是通过将问题分割为一系列的子问题来求解的,区别就是前者分割出来的子问题互相重叠,后者的子问题不重叠。这是两种...

2018-03-08 19:13:59 1670 3

原创 【离散数学】计数/排列组合

离散数学第三篇,讨论基本的计数技术——排列组合及其推广。组合数学是离散数学的重要组成部分,这里比较简略,待到有时间详细学习组合数学后再讨论一些复杂一点的问题。那何为组合数学呢?组合数学(Combinatorics)是研究一定条件的组态的存在、计数以及构造的科学。直白说就是研究物体如何安排的科学。这里的组合数学是狭义的组合数学,广义的组合数学就是离散数学。因计算机科学的核心就是使用算法研究离散...

2018-02-22 21:08:44 4159

原创 【离散数学】基本结构——集合、函数、序列、矩阵

离散数学第二篇,首先讨论常用工具——集合,并讨论在集合基础之上的一系列结构:函数、序列、矩阵、关系等。所有内容在以前的知识体系中均有涉猎,此处是从集合的角度去考虑这些内容。我认为其中要数集合的基数这一小节中可数集和不可数集的部分最为抽象。这里仅仅涉及一些常用定义性质和精彩的证明。首先,常用符号一览: 符号 含义 LaTeXLaTeXLaTeX(仅符号) ...

2018-02-22 21:03:43 8170 2

原创 【离散数学】逻辑与证明

离散数学是计算机专业很重要的基础课程,是后续数据结构,算法的基础。在学习数据结构的时候,接触到图论算法的时候,遇到了困难。于是决定回来学习离散数学。离散数学(课本)包括了数理逻辑、集合论、计数技术、关系、树、图和布尔代数等。每个章节都是数学与算法的基础,都接触过,但都没有太过深入。唯一一节算是深入了一点的应该就是布尔代数了,这在学习数字电路时是详细学习过的。所以我计划花费大概半个月时间看...

2018-02-22 21:00:18 9297 2

原创 C++语法入门【3】C++函数特性

C++函数具有一些C语言不具有的特性,内联函数、引用参数、const参数、const与引用返回值、默认参数、函数重载、函数模板等特性。承接上一篇C++语法入门【2】函数,这里介绍C++的函数特性。C++内联函数使用关键字inline定义,添加在函数声明或者定义前即可将函数声明为内联函数。内联函数与常规函数的区别在于,常规函数在调用时程序会跳转到另一个地址(即函数的地址)执

2018-01-18 21:36:44 379

原创 C++语法入门【2】函数

C++函数具有一些C语言不具有的特性,例如内联函数、引用参数、const参数、默认参数、函数重载、函数模板等特性。这些特性将在下一篇介绍。这里先介绍函数的基本知识。函数 In C/C++函数何为函数,编程语言中的函数类似于数学的函数,但又不同于数学中的函数,Wikipedia(function)解释为根据某些规则将一个输入和一个唯一的输出联系起来的关系(a relation that associ

2017-12-23 20:11:18 246

原创 C++语法入门【1】命名空间、数据类型

这一篇主要关于我最近在看C++时的一些感想和一些语法细节。C++进阶之路(图片来自知乎): C++ Started目前仍然算是开始阶段,C++ Primer Plus 是还没有看完的。 在写下了hello,world:#include<iostream>using namespace std;int main(void){ cout << "Hello,world!" << en

2017-11-09 21:02:53 432

原创 常识性算法一弹

刚开始学习算法,做一些题的时候,总会发现一些特别基础的可以说是常识性的东西自己没有掌握,写代码完全是靠模拟(意淫)。这些算法一般不涉及到数据结构,只是一些很基础的简单问题,是解决某些问题的一个步骤。所以是时候总结(积累)一波了,遇到一个加一个进来。适时再把这篇笔记发到博客。常识性的算法这里介绍几个常识性的算法,偶然遇到,相当基础。求最大公约数这是一个经典的问题。可以说小学老师就已经手把手教过了。高

2017-11-09 19:42:58 253

原创 基本数据结构——堆

堆(二叉堆)作为一种比较重要的数据结构,完全二叉树的线性存储。其典型的应用就是堆排序和优先队列。堆(Heap)堆(二叉堆)是一个数组,也可以被看做一个近似的完全二叉树。将二叉树从顶层向底层,从左向右,从1开始编号,直到二叉树节点个数n。得到完全二叉树的层序遍历序列,即是二叉堆。二叉堆中编号是从1到n的,所以节点 i 的父节点编号为⌊&nbsp;i/2⌋⌊&nbsp;i/...

2017-11-02 21:07:48 367

原创 三大简单排序算法——插入、选择、冒泡

排序作为一个如此经典与常见的问题,排序算法自然也是各种各样、各具特点。 本文主要讨论三个时间复杂度为O(n2)的简单排序算法,即插入排序、选择排序和冒泡排序。 在Wiki了排序算法之后,瞬间感觉世界之大排序算法之多。Wiki链接。 简单排序算法 最好时间复杂度 最坏时间复杂度 平均时间复杂度 是否原址 插入排序 O(n) O(n2) O(n2) 是

2017-10-31 17:50:30 522

原创 常用数据结构——栈及其应用

队列和栈作为一种最简单最基本的常用数据结构,可以说在许多方面都应用广泛。在程序运行时,他们可以保存程序运行路径中各个点的信息,以便用于回溯操作或其他需要访问已经访问过的节点信息的操作。这里对栈的特点、作用做出描述、并简单地用不同途径实现了栈的基本功能。本文的实现分别用了C语言(不是纯C,仍为cpp文件,仅仅只是采用了C语言中的部分思想)和C++,代码均在GCC编译器下验证通过。

2017-10-01 11:26:08 813 5

原创 常用数据结构——队列及其应用

队列和栈作为一种最简单最基本的常用数据结构,可以说在许多方面都应用广泛。在程序运行时,他们可以保存程序运行路径中各个点的信息,以便用于回溯操作或其他需要访问已经访问过的节点信息的操作。这里对队列的特点、作用做出描述、并简单地用不同途径实现了队列的基本功能。并介绍了队列的典型应用——迷宫问题。

2017-09-28 11:39:19 13961 1

原创 kmp算法 in POJ【POJ3461,POJ2752,POJ2406,POJ1961】

POJ_3461 Oulipo简单的kmp使用,找出第一个字符串在第二个字符串中出现的次数#include#include#includeusing namespace std;int main(void){ char mother[10001]; char son[1001]; cin >> mother >> son; int next[1001] = {-1};

2017-08-29 11:19:44 320

空空如也

空空如也

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

TA关注的人

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