计算机基础
本专栏主要记录一些我学习过得算法、Linux基础等,主要意义在于学习和分享~
女王の专属领地
尼采曰:每一个不曾起舞的日子,都是对生命的辜负!
展开
-
c++中STL的算法
STL算法库:1、非修改式序列算法:不该懂容器中的元素次序和元素值,通过input迭代器和forward迭代器完成工作;(所以标准容器)2、修改式序列算法:不直接容器中改变元素值,包含移除(逻辑)性质【不改变容器大小和元素个数】或删除性质算法,3、排序和相关算法:包含多个排序函数和其他各种函数,包括集合操作等。不能以关联容器作为目标,因为关联容器元素被视为常数,不能变更4、通用数字原创 2017-10-30 16:18:08 · 429 阅读 · 0 评论 -
C++之容器
(1)STL六大组件:容器(containers)、算法(algorithms)、迭代器(iterators)、函数对象(functors)、适配器(adapters)、分配器(allocators)C++中的容器模板类包括“顺序存储结构”和“关联存储结构”,包括vector,list,deque、set,map,multiset,multimap等。若需要存储的元素数在编译器间就原创 2017-10-28 11:16:01 · 395 阅读 · 0 评论 -
C++容器--- 顺序性容器<Vector>
~原创 2017-10-28 11:48:19 · 365 阅读 · 0 评论 -
C++之仿函数
仿函数:函数对象;仿函数(functors)其实就是重载了operator()的对象#include using namespace std;templatestruct m_plus{ T operator()(const T& x, const T& y) { return x + y; }};int main(int argc, char *argv[]){原创 2017-10-28 20:43:38 · 455 阅读 · 0 评论 -
C++值函数绑定器bind2nd
bind2nd:https://msdn.microsoft.com/zh-cn/library/3f0defz2bind2nd可以将二元仿函数转化为一元仿函数,这看上去好像很神奇,其实它的实现很简单。首先,二元仿函数会继承自binary_function,其实只是一些typedef,这些都将用于函数适配器。template struct binary_function {原创 2017-10-28 21:11:11 · 755 阅读 · 0 评论 -
数据结构与算法----线性表的链式存储结构
线性表的链式存储结构 线性表的顺序存储结构在插入和删除操作时需要移动大量的数据,他们的时间复杂度为O(n)。当我们需要经常插入和删除数据时,顺序存储结构就不适用了,这时我们就需要用到线性表的链式存储结构。 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。这就意味着,这些数据元素可以存在内存未被占用的任意位置。我们先来看下链式存...原创 2018-06-21 17:16:00 · 391 阅读 · 0 评论 -
C++容器---关联式容器<map>&<multimap>
由于multimap和map相差不大,所以基本以map做练习;集合(map)是一种包含已排序(升序)对象的关联容器。map/multimap会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。集合元素的第一个参数是key,第二个元素当做value,元素的顺序与key有关,与value无关;模板原型://Key为元素(键值原创 2017-10-30 14:22:51 · 471 阅读 · 0 评论 -
Github上的几个C++开源项目
http://www.zhihu.com/question/28341521有人吐槽怎么下手FreeNOS,上文档 FreeNOS: FreeNOS Documentation--更新--把平时关注的一些c++相关的github的project列下,欢迎补充。1. FreeNOSlordsergioinspa/FreeNOS · GitHub这是我在大学的时转载 2017-09-01 20:18:53 · 1568 阅读 · 0 评论 -
c++新手之如何调试
为什么要学习调试? 调试(Debug)是可极大的提高开发效率,排错时间,调试的时候能让我们看到程序的执行顺序、步骤以及过程等,调试的时候可以让我们监视代码中各个变量的情况,调试让我们可以让我们快速的找出错误的根源。了解VS 这个IDE中的各种调试技巧 调试技巧介绍1、监视窗口(Ctrl+D,Ctrl+W 快捷键开启)查看各个变量的值,以及各个函数的调用的原创 2017-10-27 16:37:14 · 14360 阅读 · 0 评论 -
C++容器---关联式容器<set>&<multiset>
集合(Set)是一种包含已排序(升序)对象的关联容器。set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。集合元素既充当数据,又充当关键码,以升序的顺序存储;1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而原创 2017-10-30 11:22:02 · 376 阅读 · 0 评论 -
C++容器--- 顺序性容器<list>
对于链表我不想多说了,我之前已经学过链表,对于一个双向链表来说主要包括3个:指向前一个链表节点的前向指针、有效数据、指向后一个链表节点的后向指针链表相对于vector向量来说的优点在于:(a)动态的分配内存,当需要添加数据的时候不会像vector那样,先将现有的内存空间释放,在次分配更大的空间,这样的话效率就比较低了。(b)支持内部插入、头部插入和尾部插入缺点:不能随机访问原创 2017-10-28 17:26:43 · 492 阅读 · 0 评论 -
.sh文件
介绍: sh可以说是执行脚本,或者切换到sh这个bash里,默认的shell是bash,还有tcsh,csh,ksh,zsh等。linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的。 执行脚本方式:sh + 脚本名;注:大部分的时候,简单脚本只要权限设置正确,可以直接执行,不需要sh命令的。编写:1 开头程序必须以下面的行开始(必原创 2018-01-08 18:55:27 · 834 阅读 · 0 评论 -
make脚本
Linux系统专门提供了一个make命令来自动维护目标文件,与手工编译和连接相比,make命令的优点在于他只更新修改过的文件(在Linux中,一个文件被创建或更新后有一个最后修改时间,make命令就是通过这个最后修改时间来判断此文件是否被修改),而对没修改的文件则置之不理,并且make命令不会漏掉一个需要更新的文件。 文件和文件间或模块或模块间有可能存在依赖关系,make命令也原创 2018-01-08 18:41:08 · 1187 阅读 · 0 评论 -
MakeFile文件是什么——内容、工作原理、作用、使用
MakeFile文件是什么?它里面包含什么内容、具有什么作用、怎么使用?下面就来具体说说。 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解 HT转载 2018-01-12 16:54:03 · 2247 阅读 · 0 评论 -
Shell之export命令
Linux export命令用于设置或显示环境变量。在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登陆操作。语法export [-fnp][变量名称]=[变量设置值]参数说明:-f 代表[变量名称]中为函数名称。-n 删除指定的变量。变量实际上并未删除原创 2018-02-02 20:37:10 · 676 阅读 · 0 评论 -
Linux常用终端命令之cat、grep、echo、shuf
grepgrep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。grep的一般使用方法就是:grep+[options]+pattern+filename其中patter是要搜索的字符串或正则表达式。参数和正则表达式的字符含义如下:1、参数:...原创 2018-04-19 21:37:25 · 3541 阅读 · 0 评论 -
内存核心&线程等设置及查询
tmpfs: 解决IO瓶颈,充分利用本机内存资源make -j: 充分利用本机计算资源distcc: 利用多台计算机资源ccache: 减少重复编译相同代码的时间用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。原创 2018-01-08 20:11:33 · 456 阅读 · 0 评论 -
Shell基础笔记<1:shell基础>
Shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。原创 2018-02-02 20:15:01 · 522 阅读 · 0 评论 -
Linux基础学习<1:Linux vim以及Linux命令大全>
学习资源:http://www.runoob.com/linux/linux-vim.htmlLinux vi/vimvim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。相关文章:史上最全Vim快捷键键位图 — 入门到进阶 vimVim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰原创 2018-02-01 14:33:43 · 416 阅读 · 0 评论 -
数据结构与算法----串
串 我们经常需要存储和处理字符信息,因此就有了“串”这个数据结构。串( string )是由零个或多个字符组成的有限序列,又名叫字符串。 串一般记为s 是串的名称。串中的字符数目 n 称 为串的长度,当n为0是称为空串。空格串 只包含空格的串,空格串不是空串,它可以包含多个空格。子串与主串 串中任意个数的连续字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串。串的比较 数值很容易进...原创 2018-06-25 15:01:29 · 363 阅读 · 0 评论 -
数据结构与算法----队列
队列 食堂打饭、车站买票等等我们都需要排队,有新人加入时排在队尾,队头完成相应的操作就会从队头位置离开。在数据结构中也有类似的结构——队列。队列 ( queue ) 是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出 ( First In First Out) 的线性表,简称 FIFO 。允许插入的一端称为队尾,允许删除的一端称为队头。循环队列 队列的顺序存储结...原创 2018-06-25 14:51:31 · 527 阅读 · 0 评论 -
数据结构与算法----栈
栈 栈的应用十分的普遍,比如我们按浏览器的后退键,就会逆序加载我们浏览过的网页;一些应用软件中的撤销操作也是应用了栈的方式。栈( stack )是限定仅在表尾进行插入和删除操作的线性表。 结合上图,我们对栈及其的操作进一步解释。允许插入和删除的一端称为栈顶 ( top),另一端称为栈底 ( bottom) ,不含任何数据元素的栈称为空栈。栈是后进先出 ( Last In First Out) ...原创 2018-06-25 14:31:57 · 240 阅读 · 0 评论 -
数据结构与算法----线性表的顺序存储结构
线性表的顺序存储结构 当我们可以通过一条“线”把这些连续或是离散的数据元素“串”起来储存,就是线性结构。我们看下线性表的定义:线性表 ( List ):零个或多个数据元素的有限序列。 要注意的它是一个序列,数据元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继。 本文介绍的是线性表中顺序存储结构,那么什么是顺序存储结构?线性表的顺序存储结构,指的是用一段地址连续的存...原创 2018-06-21 15:52:15 · 516 阅读 · 0 评论 -
数据结构与算法----算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上;第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。 算法执行时间需通过依据该...原创 2018-06-21 15:18:23 · 666 阅读 · 0 评论 -
数据结构与算法系列复习
学习博客系列:c版本:https://blog.csdn.net/column/details/23368.htmljava版本:https://blog.csdn.net/column/details/datastructure2.htmlhttps://www.jianshu.com/p/38853c044156http://www.iteye.com/blogs/subjects/dream...原创 2018-06-21 14:28:44 · 526 阅读 · 0 评论 -
算法练习 17:回文串
题目描述:给定一个字符串,问是否能够通过添加一个字母将其变成“回文串”。 “回文串”是指正着和反着读都一样的字符串。如:”aa”,”bob”,”testset”是回文串,”alice”,”time”都不是回文串。算法思路分析:1、输入字符串str;2、思考:如果去掉一个字符使得原来字符串为回文串,则在对称位置添加该字符必为回文串;代码练习:def isPalindrome(str): if...原创 2018-03-18 13:36:36 · 660 阅读 · 0 评论 -
算法练习 16:下起楼来我最快
题目描述:小赛是一名机智的程序员,他的机智主要表现在他下楼的速度特别快( > c < )。(吐槽一下,题目说他特别机智,而题目的限定居然是只考虑仅仅电梯和仅仅楼梯,谁家孩子做个要么选楼梯要么选电梯还做不出来,好机智!!!)小赛的家住在第n层,他可以选择从电梯下楼(假设只有小赛一个人会用电梯)或者走楼梯下楼。当前电梯停在第m层,如果他从电梯下到第1层,需要:电梯先到达这一层->开门...原创 2018-03-16 09:01:05 · 1032 阅读 · 0 评论 -
算法练习 15:接金币
题目描述:小赛非常喜欢玩游戏,最近喜欢上了一个接金币的游戏。在游戏中,使用帽子左右移动接金币,金币接的越多越好,但是金币掉到地上就不能再接了。为了方便问题的描述,我们把电脑屏幕分成11格,帽子每次能左右移动一格。现在给电脑屏幕如图标上坐标:也就是说在游戏里,金币都掉落在0-10这11个位置。开始时帽子刚开始在5这个位置,因此在第一秒,帽子只能接到4,5,6这三个位置中其中一个位置上的金币。问小赛在...原创 2018-03-15 10:22:40 · 1644 阅读 · 0 评论 -
算法练习 14:行编辑器
题目描述:你知道行编辑器吗?不知道也没关系,现在我会告诉你: 1.如果你收到一个算法思路分析:1、输入个数n,依次输入n个字符串input_char;2、定义一个新的list,判断输入字符串: 若遇到‘#’,且list不为空,则删除list的最后一个字符,为空,则跳过; 若遇到‘@’,则清空list; 其他情况,list.appen...原创 2018-03-14 10:05:55 · 548 阅读 · 0 评论 -
算法练习 13:研究生考试
题目描述:欢迎大家参加奇虎360 2016校招在线招聘考试,首先预祝大家都有个好成绩!我相信参加本次在线招聘考试的有不少研究生同学。我们知道,就计算机相关专业来说,考研有4门科目,分别是政治(满分100分),英语(满分100分),数学(满分150分)和专业课(满分150分)。某校计算机专业今年录取研究生的要求是:政治、英语每门课成绩不低于60分,数学和专业课不低于90分,总成绩不低于310分。并且...原创 2018-03-14 09:20:40 · 463 阅读 · 0 评论 -
算法练习 12 :约会
题目描述:Bob和Alice有个约会,一大早Bob就从点(0,0)出发,前往约会地点(a,b)。Bob没有一点方向感,因此他每次都随机的向上下左右四个方向走一步。简而言之,如果Bob当前在(x,y),那么下一步他有可能到达(x+1,y),(x-1,y),(x,y+1),(x,y-1)。很显然,当他到达目的地的时候,已经很晚了,Alice早已离去。第二天,Alice质问Bob为什么放她鸽子,Bob说...原创 2018-03-14 08:49:51 · 398 阅读 · 0 评论 -
算法练习 11:比大小
题目描述:现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?算法思路分析:这个我能想到的就只有枚举法和排列组合结合了(如果里面还有更好的方法一定要对话框我!!!)1、输入序列个数n,依次输入n个由abcdefghijkl乱序组成的序列;2、从第j个字符开始依次与后面的(j,11)个字符依次进行大小比较如果第j个字符&...原创 2018-03-13 21:02:48 · 866 阅读 · 0 评论 -
算法练习 10:日期倒计时
题目描述:在经济、科技日益发达的今天,人们对时间的把握越来越严格,对于一个一定影响力的公司的高管来说,他可能要将自己的行程提前安排到下个月。对于普通人来说,他也可能将几天之后的安排已经提前做好。请设计一个程序计算出今天距离未来的某一天还剩多少天。假设今天是2015年10月18日。算法思路分析:1、输入时间future_date;2、判断平闰年isLeapYear;3、先计算2015-->fu...原创 2018-03-12 16:22:18 · 802 阅读 · 0 评论 -
算法练习 9 :马路上的路灯
题目描述:城市E的马路上有很多路灯,每两个相邻路灯之间的间隔都是1公里。小赛是城市E的领导,为了使E城市更快更好的发展,需要在城市E的一段长度为M的主干道上的一些区域建地铁。这些区域要是建了地铁,就需要挪走相应的路灯。可以把长度为M的主干道看成一个数轴,一端在数轴0的位置,另一端在M的位置;数轴上的每个整数点都有一个路灯。要建地铁的这些区域可以用它们在数轴上的起始点和终止点表示,已知任一区域的...原创 2018-03-12 13:06:33 · 941 阅读 · 0 评论 -
算法练习 8 :分苹果
题目描述:果园里有堆苹果,N(1<N<9)只熊来分。第一只熊把这堆苹果平均分为N份,多了一个,它把多的一个扔了,拿走了一份。第二只熊把剩下的苹果又平均分成N份,又多了一个,它同样把多的一个扔了,拿走了一份,第三、第四直到第N只熊都是这么做的,问果园里原来最少有多少个苹果?算法思路分析:1、输入熊的个数N;2、推导:假设每个熊分别拿了x1、x2、...xN,则:N*x1 + 1 = num;N*x2...原创 2018-03-11 14:52:13 · 880 阅读 · 0 评论 -
算法练习 7:公交车乘客
题目描述:一个公交车经过n个站点,乘客从前门上车,从后门下车。现在统计了在第i个站,下车人数a[i],以及上车人数b[i]。问公交车运行时候车上最多有多少乘客?算法思路分析:1、输入站点数n;2、输入每个站点i下车和上车人数,down、up,从第i各站点开车车上总人数为sum[i];3、每个站点的人数变化up-down,存入change[i];4、总人数为sum[i] = sum[i-1]+cha...原创 2018-03-11 13:28:20 · 1841 阅读 · 0 评论 -
算法练习 6 : 计算机新功能
题目描述:当你学一些可视化程序设计语言时,老师经常会让你设计并且编程做出一个计算器,这时也许你会仿照windows系统自带的计算器外观和功能去设计,但是现在老师要你多做出一个有新功能的计算器,实现当输入一个数时,能够将这个数分解成一个或多个素因子乘积的形式,并按素因子的大小排列显示出来。大家对计算器中数的表示应该很清楚的。下面显示出了0 — 9这十个数字的表示形式。每个数字都占据5 * 3大小的字...原创 2018-03-10 16:45:33 · 324 阅读 · 0 评论 -
算法练习 5 :上台阶
题目描述:有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?注:规定从一级到一级有0种走法。输入输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。样例输入223输出对于每个测试实例,请输出不同走法的数量。样例输出样例输出12时...原创 2018-03-08 22:13:36 · 1273 阅读 · 0 评论 -
算法练习 4:路灯
题目描述:V先生有一天工作到很晚,回家的时候要穿过一条长l的笔直的街道,这条街道上有n个路灯。假设这条街起点为0,终点为l,第i个路灯坐标为ai。路灯发光能力以正数d来衡量,其中d表示路灯能够照亮的街道上的点与路灯的最远距离,所有路灯发光能力相同。为了让V先生看清回家的路,路灯必须照亮整条街道,又为了节省电力希望找到最小的d是多少?输入输入两行数据,第一行是两个整数:路灯数目n (1≤n≤1000...原创 2018-03-08 21:31:17 · 861 阅读 · 1 评论 -
算法练习 2:翻转数据
题目:http://exercise.acmcoder.com/online/online_judge_ques?ques_id=1656&konwledgeId=134算法分析:1.输入n、n个数据存入list1;2.升序排列存为list2:list2=list1.sort3.for : if list[head]==list2[head]: head++ else: l=h...原创 2018-03-08 15:47:54 · 388 阅读 · 0 评论