
C | C++
文章平均质量分 76
Wang's Blog
Keep learning for the innovation era.
展开
-
数据结构与算法之字符串: PM
字符串字符串是一个很有意思的结构:由一连串字符的东西排成了一个线性序列它的特点可以归纳为两个方面相比于向量可以存储复杂的结构,字符串里面的元素只能是字符它是一个整体,一般很长,通过整体或局部整体性进行计算经常从里面挑出一段,我们称之为pattern,访问方式是 call-by-pattern这个模式,里面蕴含诸多技巧PM: Preliminaries 预备知识既然是线性序列,我们就可以把它排个队,通过下标来访问(或通过一个秩的东西来访问,一个意思)下标从0~n-1, 假原创 2021-05-09 17:08:07 · 707 阅读 · 0 评论 -
数据结构与算法笔记:图搜索之DFS详解
图搜索 Graph Search图搜索的分类BFS广度优先(宽搜)DFS深度优先(深搜) !!!本文详解!!!深度优先搜索DFS深度优先遍历DFS, 这个策略其实是非常stupid or simple的,比BSF要简单的多同样,我们可以通过一个故事来开始在古希腊神话中, Ariadne是Crete的国王Minos的公主,她给忒修斯(Theseus)一个线团使得忒修斯成功进入迷宫杀死牛头怪兽,但事后忒修斯抛弃了她这是一个有道德意义的故事又或者存在不同的版本, 但不是我们的研究的对象原创 2021-02-08 23:50:25 · 2655 阅读 · 0 评论 -
数据结构与算法笔记:计算思维之经典农夫过河问题C++实现
农夫、羊、狼、菜的过河问题问题描述角色:农夫,羊,狼,菜条件1:船很小,只能装下农夫和其他一个角色条件2:无人看管,羊吃菜,狼吃羊问:如何让其他三种角色被农夫平安带着过河?相关分析我们可以先用人脑尝试一下相关渡河策略1 ) 先渡狼,人回来再渡菜,人回来再渡羊2 ) 先渡菜,人回来再渡狼,人回来再渡羊以上两种很好想到,而且我们可以知道羊这种角色是不能先渡河过去的,羊需要最后再渡如果先渡了羊了,之后再渡任何其他角色,都要将羊带回来可以参考小游戏:http://gameschool原创 2021-01-12 21:58:03 · 3047 阅读 · 2 评论 -
数据结构与算法笔记:分治策略之Greatest Slice,2-Way Merge,Counting Inversions,linearSelect,Diameter,Closest Pair
分而治之 divide and conquer 概述分而治之,就像是团队合作,将一项工作分解成不同的成员去处理一般情况,我们面临的规模比较大,用n来表示,我们会把它分为若干个任务来同步进行处理一般而言,两个其实就可以了,相较于1个来说有本质的提升分而治之作为解决问题策略的一种,有特殊的条件分得的两个子问题subproblem的规模要相当,差不太多两个子问题的规模加在一起不能超过之前的规模 (因为是递归分下去的,一次膨胀一点,很快这个问题本身就会爆炸)两个子问题彼此不要相关 (有时候往原创 2020-11-27 19:31:20 · 492 阅读 · 0 评论 -
数据结构与算法笔记:抽象思维之转换视角,提炼共性(分书和八皇后问题算法重构)
转换视角,提炼共性有时算法本身乍一看是不一样的,而且很不一样,比较结构特点,看不出来有什么共性如果我们转换下看问题的视角,是否能够找到共性呢1 ) 对比分书问题和八皇后问题 备注:图片托管于github,请确保网络的可访问性 这两个问题,其实差异很大,但是两者的与或图却非常类似这意味着,这两者在算法上是同一类问题,可以使用相同的程序来求解现在我们来转换一下视角 备注:图片托管于github,请确保网络的可访问性原创 2020-07-25 15:39:09 · 448 阅读 · 0 评论 -
数据结构与算法笔记:抽象思维之对比算法,发现共性(下楼梯台阶和象棋跳马问题算法重构)
关于抽象思维我们需要快速应对世界的复杂多变性,我们就需要有抽象思维抽象思维可以帮助我们提取共性,应对变化抽象思维是我们认识和表达复杂世界的关键抽象思维可以帮助我们分析藏在复杂现象背后的本质和规律对比算法,发现共性对比下楼问题和跳马问题两个问题的具体分析在前面的文章中已经完成,我们来对比一下两者两者结构很像,都用递归枚举算法, 下楼问题有三个分叉,跳马问题有四个分叉两者与或图基本相同,在算法上是同一类问题,可以使用基本相同的程序来求解两个不同场景下的问题是具有同一性质,但是它们并原创 2020-07-25 09:01:50 · 492 阅读 · 0 评论 -
数据结构与算法笔记:计算思维之人鬼渡河问题
人鬼渡河问题1 ) 问题描述目标:将东岸的3人3鬼通过一只小船安全转移到西岸,希望摆渡次数尽可能少条件船的容量有限,一次最多只能坐2人(或2鬼或1人1鬼)无论是在河的东岸还是在河的西岸,一旦鬼数多于人数,则人将被鬼吃掉怎样渡河的大权掌握在人的手中说明:划船的时间忽略不计。船一靠岸即将船与岸视为一体,人和鬼即使还没有下 船也视为已上岸任务:编写程序,求出一种渡河方案 备注:图片托管于github,请确保网络的可访问性 2 ) 分析目标是找原创 2020-07-22 22:13:08 · 2030 阅读 · 1 评论 -
数据结构与算法笔记:计算思维之分书和八皇后问题
分书问题1 ) 问题描述有编号分别为 0、1、2、3、4 的五本书,准备分给A、B、C、D、E五个人。请你写一个程序,输出所有的分书方案,要求每个分书方案都能让每个人都皆大欢喜(即每人都分到感兴趣的书)。假定这5个人对5本书的阅读兴趣如下表: 备注:图片托管于github,请确保网络的可访问性 2 ) 分析初步分析上面的这个阅读兴趣表格可以用一个二维数组描述int like[5][5] = { {0, 0, 1, 1, 0}, {1原创 2020-07-21 15:59:14 · 481 阅读 · 0 评论 -
数据结构与算法笔记:计算思维之下楼梯台阶和象棋跳马问题
下台阶问题1 ) 问题描述从楼上走到楼下共有 h 个台阶,每一步有三种走法走一个台阶;走二个台阶;走三个台阶。问:一共可以走出多少种方案? 即共要多少步? 每一步走几级台阶?2 ) 分析初始思路我们根据题目给定的场景,先简单模拟一下,设定 h=4h=4h=4 备注:图片托管于github,请确保网络的可访问性 如上图所示, 这里有4阶楼梯, 红色数字代表每一步走几级台阶这里枚举了4层台阶的所有可能情况, 但是不管具体有几级台阶,下原创 2020-07-20 22:20:44 · 1770 阅读 · 0 评论 -
数据结构与算法笔记:计算思维之谁做的好事与刑侦作案问题
谁做的好事清华附中有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。A说:不是我。B说:是C。C说:是D。D说:他胡说。已知:三个人说的是真话,一个人说的是假话。现在请你根据这些信息,编写程序找出做了好事的人。分析将四个人说的四句话(自然语言)转换成计算机可以计算的式子, 可使用循环枚举的方式来判断(1) 思路一:通过字符表示人先定义一个字符变量 thisman 表示要寻找的做了好事的人的“名字(代号)”(A、B、C、D),即char this原创 2020-07-19 20:22:37 · 1535 阅读 · 0 评论 -
数据结构与算法笔记: 最大红矩形分析
最大红矩形问题描述有一个 n∗mn*mn∗m 的棋盘,棋盘上的每个点都是红的或绿的你需要找出一个面积最大的矩形区域,使得其中没有绿的格子输入格式第一行 2 个正整数 n,m,描述棋盘尺寸接下来 n 行描述这个棋盘,每行 m 个字符,每个字符为 . 或 X,其中 . 表示这个位置是红色的,X 表示这个位置是绿色的输出格式一行一个整数,表示最大面积。数据范围对于 30% 的数据,n,m<=100对于 60% 的数据,n,m<=400对于 100% 的数据,n,m原创 2020-07-18 17:01:54 · 390 阅读 · 0 评论 -
数据结构与算法笔记:求直方图最大面积算法分析
直方图最大面积问题描述有n列的直方图,第j列高度为hjh_jhj, 求一个面积最大的子矩阵 备注:图片托管于github,请确保网络的可访问性 格式要求输入第一行正整数n,第二行n个空格隔开的非负整数数据范围: 所有直方图的列不会超过30000关键算法实现1 ) 算法1:时间复杂度为: O(n3)O(n^3)O(n3)的实现分析矩形面积为底和高的乘积底部从a到b,那么底边长为: b-a+1高为:min{hi∣a≤i≤b}min \{h原创 2020-07-16 19:21:35 · 1343 阅读 · 0 评论 -
数据结构与算法笔记: 栈排序分析
栈排序1 ) 栈结构 遵循LIFO原则,first in last out2 ) 排序这里通过插入排序来分析通过cpp方式实现// 这里使用万能头#include <bits/stdc++.h>using namespace std;stack<int> sorting(stack<int>);int main() { ...原创 2020-05-02 18:40:48 · 694 阅读 · 0 评论 -
AI笔记: 计算机视觉之图像直方图、图像分割、大津算法和区域生长算法
概述图像分割是视觉中非常重要的一个内容我们人类在看周围世界的时候, 首先会将视野中的目标分成一个一个不同的焦点, 进一步再对每一个目标进行详细的分析模拟人类视觉,计算机视觉也要对图像中不同的目标一个一个的进行分割出来图像直方图(灰度直方图) 在左上角的图像每一个像素格分别对应了该像素的对应灰度,在这里我们只考虑灰度图像每个像素对应的灰度幅值是0~255之间,我们可以围...原创 2020-02-27 18:11:10 · 1967 阅读 · 0 评论 -
AI笔记: 计算机视觉之图像分割:视觉算法开发步骤和使用OpenCV完成图像分割
视觉算法开发的基本步骤任务要求 检测图中所有米粒计算米粒面积、直径的直方图和方差解决思路图像采集(取到图像)在示例只需要读一幅图片对于笔记本自带的摄像头,opencv提供支持,得到当前视频,返回当前帧工业摄像机比较麻烦, 通常不支持windows自带的支持流媒体的摄像头, 需要摄像头本身提供的sdk单独做一个程序, 采集图像图像预处理滤波,缩放,增强等...原创 2020-02-29 14:46:27 · 1367 阅读 · 0 评论 -
AI笔记: 计算机视觉之图像边缘检测: Robert算子, Sobel算子, Laplace算子, LoG算子, Canny算子
边缘检测基本思想边缘是图像最重要的一类特征在生活中速写就是用铅笔勾勒出图像的边缘信息,我们通过速写识别作画的内容,也就是说边缘能够提供图像中特别重要的信息四类不同的边缘 第一层是图像的变化趋势第二层是灰色的函数趋势第三层是对这个函数一阶微分第四层是对这个函数二阶微分边缘检测的本质是微分实际中常用差分,x方向和y方向图像边缘检测 - 基本算子Robert算子...原创 2020-02-27 13:21:54 · 4151 阅读 · 0 评论 -
AI笔记: 计算机视觉之图像的采集和传输、视频的压缩和显示
图像采集1 )CCD传感器基本原理外接光线经过镜头照射到了CCD图像传感器(由1个个的小格子组成,它的全称是电容耦合器件,每一个小方格都是一个电容,每个小方格的尺寸非常的小),由CCD图像传感器得到了相关电信号,通过图像信号处理和图像放大电路,同时配合我们的时钟同步信号产生多行数字图像,最终通过数码图像存储到存储卡上, 也可以传输到电视上观看。经过CCD将外界镜像转换成了二维的数字信号(二维矩...原创 2020-02-22 21:29:23 · 3783 阅读 · 0 评论 -
AI笔记: 计算机视觉之照明模型和颜色模型
照明模型光通量人能够看到周围的世界有2个部分构成:外在光源、光源物体表面的情况光通量是指人眼所能感觉到的辐射功率,它等于单位时间内某一波段的辐射能力和该波段的相对视见率的乘积以符号表示,单位是lm(流明)1lm = 0.00146瓦不同光源的典型值 光源 光通量 说明 太阳 ...原创 2020-02-22 18:30:04 · 609 阅读 · 0 评论 -
AI笔记: 计算机视觉概述
关于人工智能人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。计算机视觉是人工智能的一个分支,它研究如何使人工系统从图像或多维数据中“感知”的科学。人类技术发展历史人类历史就是一部技术发展的历史,经历了这么几个阶段:1万年前人类开始种植粮食,进入农业阶段十七世纪后期的工业革命,大规模的机器生产代替手工作坊,解放了人类的双手和...原创 2020-02-21 17:58:25 · 816 阅读 · 0 评论