c++
java
大恐龙的小弟
xxxxx
展开
-
数据结构图的理解
近几周学习了图的存储与有关图的各种算法,相比于上一章的二叉树而言更加的难以理解与掌握,emm学习的过程就是在老师讲课的基础上再加上课后openjudge的练习题,这里如果你实在不理解的话个人建议把不明白的算法的整个的演变过程在草稿纸上一步一步的演化,就可以很好的理解(吐槽:oj的题好像就只有一组测试数据)图的存储结构 由于图的结构比较复杂,任意两个顶点之间都...原创 2019-11-28 22:13:47 · 396 阅读 · 1 评论 -
树与二叉树理解
树与二叉树继学习完了字符串和多维数组的内容后,我们新的一章学习了树和二叉树的内容。这一章个人感觉没有学好第二章链表内容的同学,对递归的思想理解不是很深刻的同学学起来因该会很难受。树呢,它是一种非线性的数据结构,它是由n个有限结点组成有层次关系的集合。树具有以下特点,可以根据这些特点来判断一个数据结构是否是树。1.每个结点具有0个或多个子结点2.每个子结点只有一个父结点3.没...原创 2019-11-17 15:30:42 · 216 阅读 · 0 评论 -
字符串与数组的理解
学习完了栈与队列之后呢,我们紧接着学习了字符串与数组。关于本章学习的字符串与数组的内容,下面我写一下自己对本章内容的理解。 数组是数据结构中的基本模块之一。因为字符串是由字符数组形成的,所以二者是相似的。数组的很多属性和处理方法在字符串中也是适用的,数组和字符串都属于比较基础的数据结构类型,他们都属于顺序存储结构。顺序存储结构即在内存空间中通过占位的形式...原创 2019-10-28 20:16:32 · 587 阅读 · 0 评论 -
栈与队列的理解
继数据结构学完了链表之后,我们开始了栈与队列的学习,相比较于上一章的链表,这一张相比没有上一张那么难,下面总结一下我对栈与队列的理解与感悟。栈与队列的共同点:栈和队列的访问是受限制的,即在特定时刻只有一个数据项可以被读取或删除。栈的特点: 后进先出队列的实现:与栈一样,可以用数组实现也可以使用链表实现。栈的实现: 主要机制可用数组...原创 2019-10-28 19:40:06 · 539 阅读 · 0 评论 -
数据结构认识
数据结构,毋庸置疑,在程序设计中是极其重要的存在,在计算机科学中,不只是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序和大型应用程序的重要基础。 刚刚讲完这方面的基本内容,因此,CSDN的这次的文章文章就选择了数据结构(也是打算再次补习可怜的基础) 基础概念及基本术语 数据 ...原创 2019-05-08 23:28:23 · 469 阅读 · 0 评论 -
二分
一、什么是二分查找?1、我们首先引入这样一个问题:如果规定某一科目成绩分数范围:[0,100],现在小明知道自己的成绩,他让你猜他的成绩,如果猜的高了或者低了都会告诉你,用最少的次数猜出他的成绩,你会如何设定方案?(排除运气成分和你对小明平时成绩的了解程度)①最笨的方法当然就是从0开始猜,一直猜到100分,考虑这样来猜的最少次数:1,100将分数区间一分为2,我们第一...原创 2019-04-24 23:29:14 · 259 阅读 · 0 评论 -
二分技巧与思想
1.什么是二分?二分,是二分查找的简称,又叫折半查找,是一种用于快速查找的工具,也可以说是一种技巧与思想。2.二分的作用也许你以前玩过一个游戏,就是一个人在心中想一个数,规定这个数大于0并且小于100,然后让你猜他想的那个数,你每猜一次他都会告诉你你猜的数是大了还是小了,最后直到你根据他的提示不断缩小他想数的范围并找到他想的数,其实二分就是用来快速找到“他心里所想的那个数”。如果...原创 2019-05-05 08:05:06 · 190 阅读 · 0 评论 -
浅谈自己对二分理解与应用
二分是ACM中十分常用的技巧,在有序,或者更准确说是单调递增(减)条件下,可以快速查找一个需要的数字。常用于:在时间最小的情况下(二分时间),在最长边最短的情况下(二分长度 )。但是我这么久了依然写不好二分。本菜鸡决定写个总结。二分的基本模板:while(front <= back) {int mid = (front + back) >> 1;...原创 2019-04-27 21:52:22 · 127 阅读 · 0 评论 -
搜索基础
本搜索算法这周的题目中设计到的算法:DFS 和 BFS 都是基本的图算法,图是一种数据结构,可以表示出节点之间的关系。基本搜索算法有两种策略:深度优先广度优先[1] 深度优先搜索我们对一个图进行搜索,无非就是寻找某种状态,深度优先顾名思义,就是寻找某种状态的时候选择一条路走到底,走不通就退回去换另一条路。就像走迷宫那样,我们把迷宫抽象为一个图,路...原创 2019-04-17 23:12:38 · 202 阅读 · 0 评论 -
类和对象的理解
类和对象理解一:类的定义 类的基本思想是数据抽象和封装,数据抽象是一种依赖接口和实现分离编程的技术。类要实现数据抽象和封装,需要定义一个抽象数据类型。①:数据成员和抽象函数 结构体内的函数被称为成员函数,结构体中的数据称为数据成员。这样的结构体被称为类,这种结构体类型的变量被称为对象。②...原创 2019-04-14 21:28:35 · 440 阅读 · 0 评论 -
图论看法
上节课讲了图的基本内容,根据自己的理解和csdn查到的资料,也看了图的遍历等基本内容,下面说说自己对图的看法 图是数据结构和算法学中最强大的框架之一(或许没有之一)。图几乎可以用来表现所有类型的结构或系统,从交通网络到通信网络,从下棋游戏到最优流程,从任务分配到人际交互网络,图都有广阔的用武之地。 而要进入图论的世界,清晰、准确的基本概...原创 2019-05-19 09:39:09 · 659 阅读 · 0 评论 -
图的基本理解
首先对于图内所需的基本术语进行理解顶点可以理解为之前学的结点。可以理解为之前学的结点。VR两个顶点之间的关系,(比如a----b(无向图),这样说明a的尾部是b,也可以知道b的头是a)。弧---->有向图 边----->无向图比如a---->b,可以这样理解a能检索到b,但b不能检索到a。这样的话----->这种的符号称为弧,即弧是单向的,是有向图特...原创 2019-05-15 22:29:57 · 203 阅读 · 0 评论 -
二叉树理解
一、二叉树简介1、二叉树简介二叉树是由n(n>=0)个结点组成的有序集合,集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。二叉树的五种形态:数据结构(十四)——二叉树2、二叉树的存储结构模型树的另一种表示法:孩子兄弟表示法A、每个结点都有一个指向其第一个孩子的指针B、每个结点都有一个指向其第一个右兄弟的指针数据结构...原创 2019-05-11 22:34:43 · 566 阅读 · 0 评论 -
最小生成树
最小生成树的概念生成树:连通图的极小连通子图称为图的生成树,显然顶点数为n 的连通图, 生成树边数为n-1;从连通图中某一顶点出发遍历图时,图中所有的顶点加上遍历时经过的边所构成的子图T, 恰好就是一棵生成树最小生成树:生成树各边权值之和为生成树代价,其代价最小的生成树为最小生成树。最小生成树的应用设在 n 个城市之间建立通讯网, 则要连通 n 个城市最少需要修建 n-1...原创 2019-05-26 00:03:18 · 131 阅读 · 0 评论 -
图的遍历
图的遍历图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作和树的遍历操作功能相似。图的遍历是图的一种基本操作,图的许多其它操作都是建立在遍历操作的基础之上。图的遍历通常有深度优先搜索和广度优先搜索两种式。1 深度优先搜索深度优先搜索遍历类似于树的先根遍历,是树的先根遍历的推广。假设初始状态是图中所有顶点未曾被访问,则深度优先搜索可从图中某个顶点发 v...原创 2019-05-22 22:57:59 · 534 阅读 · 0 评论 -
c++系统开发心得
c++系统开发心得 学习c++有一个学期了,从四五个周之前,我们初步的学习完类和对象的时候在老师的要求和指导下就开始写初步的系统。当时记得写的第一个系统是简单的通讯录系统,由于学习的内容比较少,运算符的重载,还有下面的组合与继承的内容都没有学习到,这个简略的系统实现的功能无非就是增删查改四个功能,而且所要求的数据成员也仅...原创 2019-06-15 19:46:25 · 897 阅读 · 1 评论 -
c++继承多态知识感悟
*组合与继承 先说说组合,当设计一个新的类的时候,可以将一个已有类的对象作为成员,然后通过成员对象实现已有类的功能,类的对象成员与内置类型数据成员的声明语法一样。我们很早就开始接触并使用了。 再说说继承: c++一共有着三大特性,封装继承和多态,所以足以体现出继承的重要。我感觉继承就是是为了实现代码的复用,如果派生类继承了基类那...原创 2019-06-17 08:44:44 · 294 阅读 · 0 评论 -
学习了线性表的理解与感悟
我先来写一下我对模板的理解:比如想实现不同类型的数据进行相同的函数操作:用我们之前所知道的方法就是一个函数一个函数写,这是可以的,但是你想过没有,如果每来一个类型你就需要写一个对应类型的函数,这样不仅代码的复用率极低,效率低。所以为了解决这个问题,就得用到C++的模板,可以实现不同数据类型的相同功能。①:函数模板函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,编译器会...原创 2019-09-19 18:20:00 · 2988 阅读 · 0 评论 -
区间dp总结
前言:这两天没有写什么题目,把前两周做的有些意思的背包题和最长递增、公共子序列写了个总结。反过去写总结,总能让自己有一番收获......就区间dp来说,一开始我完全不明白它是怎么应用的,甚至于看解题报告都看不明白,而到了现在,遇到区间dp之类的题目,我不至于没有任何方向,慢慢的推导,有些题目没有自己想象的那么难,还是可以推导出转移方程的,有些题目,在自己推导过后,与解题报告相对照,也总能有一番全新...原创 2019-04-13 22:39:48 · 155 阅读 · 0 评论 -
深度广度搜索的区别和各自特点
一)深度优先搜索的特点是:①无论问题的内容和性质以及求解要求如何不同,它们的程序结构都是相同的,即都是深度优先算法(一)和深度优先算法(二)中描述的算法结构,不相同的仅仅是存储结点数据结构和产生规则以及输出要求。②深度优先搜索法有递归以及非递归两种设计方法。一般的,当搜索深度较小、问题递归方式比较明显时,用递归方法设计好,它可以使得程序结构更简捷易懂。当搜索深度较大时,当数据量较大时...原创 2019-04-20 22:40:23 · 5773 阅读 · 0 评论 -
dp心得体会
关于学DP的心得体会这一周都在做DP题(虽然都是最基础的),现在对DP的了解就是公式。开始对DP一点都不了解,例如数塔这一题。经长有一个想法:从最上面开始,往下搜索,在第2个层也许是最大的,但是在第3层就不一定了,同理第4层,第5层也是,有可能最后一层的数特别大,那这怎么呢?答案是从下往上搜索。例如5层数塔,可以看下这篇博客数塔问题。就像百度百科上讲的,把一个大问题分解为几个子问题(小...原创 2019-04-06 22:49:24 · 340 阅读 · 0 评论 -
循环控制结构
第六章 循环控制结构通过本章的学习,主要学会了计数控制的循环,条件控制的循环,嵌套循环。这三种循环主要还是通过for,while,do-while语句还有continue,break语句来实现的。除此之外还包含了结构化程序设计的基本思想,程序调试与排错等内容 下面我总结一下这些内容以及本人的理解与感悟。循环控制结构c语言中提供了for、while、还do-while三种循环语句来...原创 2018-12-06 15:50:31 · 212 阅读 · 0 评论 -
数组的定义和初始化
第八章:数组 本章重点介绍向函数传递一维数组和二维数组的方法。主要内容有:①数组类型,数组的定义和初始化,以及对数组名特殊含义的理解。③排序、查找、求最大最小值等常用算法。一:一维数组的定义和初始化例1:给定两个n维向量a=(a1,a2,…,an)和b=(b1,b2,…,bn),求点积a·b=a1b1+a2b2+…+anbn。程序:...原创 2018-12-22 10:25:34 · 526 阅读 · 0 评论 -
c语言学习半年的感悟
C语言学习感悟 计算机一班 王晓雨 学习C语言也已经半年了,转眼间,课程就已经结束了。 转眼间已经跟着费老师学习c语言已经一个学期了,17周的时间,我领略了c语言的魅力。虽然我知道,我学的并不精通,在班级里也不是学的好的,但是,这种大学的学习风格,是我以前没有见过的。大学真的是要考自己,从初期对这...原创 2018-12-31 20:44:05 · 1303 阅读 · 0 评论 -
2019年1月20日
今天没有接触新的知识,把自己大一上半学期的在openjudge上写的题目基本都看了一遍,因为前面的太简单,主要就是看了循环还有数组的题目,主要针对当时死活敲不出来呀,没有思路的题目进行,并且大多都敲了一边,有了新的理解和感悟,还有很多当时觉得很困难,但是在现在回去一看就很简单的题目,自己虽然水平很低,但是感觉出来自己有进步。 温习了这些代码,明天要开始接触新知识,做51nod网站上的...原创 2019-01-20 22:55:17 · 165 阅读 · 0 评论 -
优先队列
优先队列根据老师在课上所讲的优先队列还有在csdn上做的几道优先队列的题,我在网上查了很多优先队列的资料,大体上了解了优先队列的内容,下面结合上课所讲还有网上的资料来总结一下优先队列我自己的简介。优先队列书上说是一种容器适配器,它的第一个元素(位于头部top)总是队列中最大的元素,这里的“最大”是指队列元素的严格弱序中的“最大”。严格弱序是一系列数或事物按照一定的比较关系“<”排列得出的...原创 2019-03-13 22:54:29 · 2956 阅读 · 0 评论 -
STL
学习stl的理解这个周的两次学习acm选修课,老师讲完了c++中的stl的基本用法与几个例题。stl在网上说的是建立在泛型编程之上的,提供了六大组件:容器、算法、迭代器、仿函数、适配器、配置器。其中后三个没有听说过,只是学习到了前三个。 容器:装东西的东西,装水的杯子,装水的大海等等吧,stl里的容器是可容纳一些数据的模板吧。而迭代器呢,就像往...原创 2019-03-09 19:42:34 · 102 阅读 · 0 评论 -
doing homework(贪心)
Doing Homework againIgnatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the homework. If Ignatius hands in ...原创 2019-03-19 19:34:08 · 396 阅读 · 0 评论 -
贪心算法
贪心算法总结 自从stl题库结束之后,这两天开始了做贪心算法的题目,对于各种不同类型的问题采用了贪心算法,略有体会。便将自己的所得写下来。 贪心算法是将一个问题分成若干个小问题,求取小问题的解,取出其中的最优解,在整合起来获得整个问题的最优解。 贪心选择从顶向下,以迭代的方法做出选择,每一次选择都对结果有直接影响...原创 2019-03-16 23:33:44 · 131 阅读 · 0 评论 -
贪心+动态规划
贪心算法的简单总结: 贪心算法就是每步都采取最优的做法,也就是说每步都选择局部最优解,最终得到的就是全局最优解贪心算法并非适用于任何情况,但它却易于实现 这两天预习了一下动态规划的基本内容,没有做过具体题目还不知道具体细节,但根据网上的来总结一下:动态规划:Dynamic Programming(此处“Programming”为“规划”,而非指程序),研究多步决策过程最优...原创 2019-03-20 22:55:55 · 355 阅读 · 0 评论 -
c++学习四周自己的理解
①auto与decltypeauto 指定符(C++11 起):对于变量,指定其类型将从其初始化器自动推导而出。对于函数,指定其返回类型是尾随的返回类型或将从其 return 语句推导出 。对于非类型模板形参,指定其类型将从参数推导出。decltype 指定符:检查实体的声明类型或表达式的类型及值分类。具体区别:auto 通过变量的初始值来推断变量的类型 ...原创 2019-03-24 21:32:24 · 100 阅读 · 0 评论 -
阶段学习完dp的对背包问题的感受
背包题目:有 N件物品和一个容量为 V的背包。第 i 件物品的重量是 c[i] ,价值是 w[i] 。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态: 即 f[i][v] 表示前 i 件物品恰放入一个容量为 v 的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-...原创 2019-04-03 23:18:23 · 155 阅读 · 0 评论 -
动态规划的介绍与递归的区别
动态规划的定义:要解决一个复杂的问题,可以考虑先解决其子问题。这便是典型的递归思想,比如最著名的斐波那契数列,讲递归必举的例子。 斐波纳契数列的定义如下:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*) 用递归可以很快写出这样一个函数,咋一看真牛逼,几行代码就搞定了代码:int fib(int i){if(i <= 1){...原创 2019-03-23 20:43:11 · 6184 阅读 · 0 评论 -
动态规划再理解
递归到动规的一般转化方法 递归函数有n个参数,就定义一个n维的数组,数组的下标是递归函数参数的取值范围,数组元素的值是递归函数的返回值,这样就可以从边界值开始, 逐步填充数组,相当于计算递归函数值的逆过程。 动规解题的一般思路 1. 将原问题分解为子问题 把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题都解决,原问题...原创 2019-03-30 22:54:02 · 97 阅读 · 0 评论 -
动态规划阶段总结
一般的,我们常用的解决问题的方法有暴力解决法、贪心法和动态规划法。在你遇到一个问题怎么想都想不出其解法的时候,很可能就需要用到动态规划了;在你的题目中出现最优、最多、最好等字眼的时候,很可能可以使用动态规划问题来解决了。 那么什么是动态规划呢?动态规划和分治思想、递归有着千丝万缕的关系。简单来说,递归就是在程序运行的过程中调用自身的一种编程技巧;动态规划通过寻找...原创 2019-03-27 21:30:48 · 254 阅读 · 0 评论 -
区间dp小结
——这篇文章主要想总结下区间DP,同时给自己复习巩固上一次课刚讲的这方面知识点。区间DP一、定义区间DP,顾名思义是在区间上DP,它的主要思想就是先在小区间进行DP得到最优解,然后再利用小区间的最优解合并求大区间的最优解。二、实现思路下面给出区间DP最简单形式的伪代码(具体要根据题目修改)//mst(dp,0) 初始化DP数组for(int i=...原创 2019-04-10 21:48:47 · 130 阅读 · 0 评论