数据结构与算法
文章平均质量分 63
记录学习的点点滴滴!
一只学弱狗!
心中有路 行者无疆
展开
-
迭代法求解递推方程
大家好,我是一只学弱狗,记录学习的点点滴滴!算法才是程序设计的灵魂,每日一题!优质文章一张黄图的故事JavaSE练习项目我是菜鸟、我小试牛刀linux指令太多记不住?小白看这篇就够了!优质专栏数据库就该这样学爪哇外步篇下面介绍一种根据递推方程求解时间复杂度的方法,也是我们比较习惯的一种方法正如我们前面对汉诺塔和插入排序分析的那样,大家可以再看一下感受下。但是有时,我们需要进行换元下面通过二分归并排序的例子来体会下上面的思想下面是它的伪代码表示最后听过数学归纳.原创 2021-04-11 15:59:52 · 482 阅读 · 0 评论 -
算法的本质是数学?
大家好,我是一只学弱狗,记录学习的点点滴滴!算法才是程序设计的灵魂,每日一题!优质文章一张黄图的故事JavaSE练习项目我是菜鸟、我小试牛刀linux指令太多记不住?小白看这篇就够了!优质专栏数据库就该这样学[爪哇外步篇](https://blog.csdn.net/qq以前上课的时候,经常听老师说,他们研究方向所遇到的问题最终都是数学问题,比如用计算机描绘流水的动画啥的,这些动画非比我们想象的动画,而是特别专业特别逼真的那种,今天,我也逐渐感受到算法的本质真的是数学(听我.原创 2021-04-10 22:18:27 · 2901 阅读 · 0 评论 -
今天聊聊希尔排序
大家好,我是一只学弱狗,记录学习的点点滴滴!算法才是程序设计的灵魂,每日一题!优质文章一张黄图的故事JavaSE练习项目我是菜鸟、我小试牛刀linux指令太多记不住?小白看这篇就够了!优质专栏数据库就该这样学爪哇外步篇今天看算法很美的时候呢,老师提到了希尔排序,以前听说过希尔排序,但是在我写这篇博客的前一个小时,我是真的忘记了,还记得大一那会,分不清希尔与哈希,呜呜~,不愧是我,现在就来说说希尔排序,希望对你有所收获哦!讲希尔排序之前,我想先跟大家讲下插入排序,因为希尔排.原创 2021-04-10 11:44:35 · 539 阅读 · 0 评论 -
2020年第11届蓝桥杯C++B组 第一次省赛真题
#include <iostream>using namespace std;int power = 10000; //体力 int consumeSec = 10; //每秒消耗体力 int recoverSec = 5;//每秒增加体力 int totalSec;int main(){ while(1){ if(power > 600){//若体力大于600,则可认为此次的一分钟消耗不完 power-=600; totalSec+=60;.原创 2021-04-06 12:23:17 · 346 阅读 · 0 评论 -
姊妹篇:最长公共子串
上一次讲解了最长公共子序列,这次·来求解下最长公共子串先回顾下最长公共子序列问题,因为子序列没必要连续,所以当子串A中的第x个元素与子串B中的第y个元素不等时,可以先掩掉一个元素,然后剩下的子串再与另外一个子串相比,最终得出最优解。但是最长公共子串问题呢,一字之差,它的思想又发生了变化,这样变化理解起来是困难的,刚开始给我一种感觉,子串A中的第x个元素与子串B中的第y个元素不等时,不能再像最长公共子序列那样掩去其中一个元素去探测,而是应该从0开始,为什么?因为它已经断掉了举例来说吧A : .原创 2021-03-30 15:30:40 · 109 阅读 · 0 评论 -
原来我也可以求解dp:最长公共子序列问题
题目描述:给定两个字符串,寻找这两个字串之间的最长公共子序列。子序列:将给定序列中零个或多个元素去掉后的结果先说一说我对动态规划感想吧,这种想法来源于01背包问题,感觉动态规划难主要是难在递推关系的建立上,即我们不能找到解决问题合适的一面,我不喜欢直接告诉你递推关系是什么,更不喜欢直接上代码,我觉得做题和人类的演进一样,它有一个过程。抛开时间空间限制先不管,我们首先要寻找一种解决方法的方法,先不去关系它有多个巧妙,往往可以是暴力枚举,就拿这个题老说,如果存在两个字符串A:“ABCFDB”,字符串B.原创 2021-03-30 11:32:07 · 146 阅读 · 0 评论 -
小白必看的第11届蓝桥杯大赛软件类国赛C/C++大学B组真题解析
C++实现这里给大家扩充个知识点,非常实用,就是在c++中,string和int型的相互转化 //将int类型转为string类型 stringstream ss; int a = 1; string str; ss<<a; //理解为将a推入到ss中出路 ss>>str;//将处理结果输出到str中 cout<<str<<endl; //将string类型转为int类型 stringstream ss; int a = 1; stri原创 2021-03-27 15:34:44 · 1108 阅读 · 0 评论 -
位运算的奇巧淫技
通过上一节的学习,我们对位运算已经有了一些认识,这一节呢,再通过一些个例题,感受下它的奇巧淫技。将整数的奇偶位交换给定一个十进制数,将它的二进制表示形式的奇位和偶位发生互换,然后输出交换后的十进制数如:9 二进制表示为 1001奇数位和偶数位发生互换 为0110则输出6方法一:与之前一样,我们可以使用数组存储该数的二进制表示,然后通过for循环,交换奇偶位上的两个数,然后再把变换后的数组还原为十进制数**方法二:**我们可以将该数的二进制表示与01010101发生与运算,我们知道,1&am原创 2021-03-27 09:23:00 · 229 阅读 · 0 评论 -
位运算原来如此有趣!
位运算原来如此有趣!众所周知,任何数据在计算机中均是以二进制数来存储的,二进制数是计算机所能识别的语言,那么对于这个语言我们可以做一些哪些有趣的操作呢?今天我们就来聊一聊它吧!首先,我们必须清楚一些符号的函数,比如&、|、~、^、<<、>>、>>>& :它叫与运算,即只有1&1 = 1,其他均为0,注意,此处的1是二进制的1,而不是指整型。扩展,位运算&与关系运算符&&有何区别?看下面代码c++原创 2021-03-25 20:47:03 · 246 阅读 · 0 评论 -
双机调度问题
大家好,我是一只学弱狗,记录学习的点点滴滴!优质文章一张黄图的故事JavaSE练习项目-坦克大战我是菜鸟、我小试牛刀linux指令太多记不住?小白看这篇就够了!优质专栏数据库就该这样学爪哇外步篇题目描述 有n项任务,任务i的加工时间为ti,ti为正整数,i=1,2,…n,用两台相同的机器加工,从0时刻开始计时,完成时间是后停止加工机器的停机时间,问如何把这些任务分配到两台机器上,使得完成时间达到做小?分析 这个题呢,不知道大家看完什么感受,我觉的是挺不好搞的,但.原创 2021-01-15 18:34:53 · 1524 阅读 · 2 评论 -
0-1背包问题(5种方法)
大家好,我是一只学弱狗,记录学习的点点滴滴!优质文章一张黄图的故事JavaSE练习项目-坦克大战我是菜鸟、我小试牛刀linux指令太多记不住?小白看这篇就够了!优质专栏数据库就该这样学爪哇外步篇题目描述 有n件物品要装入背包,第i件物品的重量wi,价值vi,i=1,2,…,n,背包最多允许装入的重量为B,问如何选择装入背包的物品,使得总价值达到最大?穷举法 解是一个取值只能是0或1的向量,最先考虑考虑的是穷举,即遍历出所有的情况,然后根据约束条件对所有情况进行筛选,.原创 2021-01-15 15:26:39 · 3377 阅读 · 0 评论 -
货郎问题
大家好,我是一只学弱狗,记录学习的点点滴滴!优质文章一张黄图的故事JavaSE练习项目-坦克大战我是菜鸟、我小试牛刀linux指令太多记不住?小白看这篇就够了!优质专栏数据库就该这样学爪哇外步篇题目描述 有n个城市,已知任两个城市之间的距离,求一条每个城市恰好经过1次的回路,使得总长度最小#include <iostream>using namespace std;//城市的个数 int n;//得到任意两点之间的距离 int getDista.原创 2021-01-14 22:32:35 · 498 阅读 · 0 评论 -
排序算法回顾
大家好,我是一只学弱狗,记录学习的点点滴滴!优质文章一张黄图的故事JavaSE练习项目-坦克大战我是菜鸟、我小试牛刀linux指令太多记不住?小白看这篇就够了!优质专栏数据库就该这样学爪哇外步篇...原创 2021-01-14 16:54:19 · 97 阅读 · 0 评论 -
投资问题
大家好,我是一只学弱狗,记录学习的点点滴滴!优质文章一张黄图的故事JavaSE练习项目-坦克大战我是菜鸟、我小试牛刀linux指令太多记不住?小白看这篇就够了!优质专栏数据库就该这样学爪哇外步篇题目描述 m元钱,投资n个项目,效益函数fi(x),表示第i个项目投x元的收益,i=1,2,…,n,求如何分配每个项目的钱使得总效益最大?实例 5万元,投资给4个项目,效益函数如下。xf1(x)f2(x)f3(x)f4(x)00000.原创 2021-01-13 12:53:05 · 664 阅读 · 0 评论 -
一道算法题引起的思考
大家好,我是一只学弱狗,记录学习的点点滴滴!优质文章一张黄图的故事JavaSE练习项目-坦克大战我是菜鸟、我小试牛刀linux指令太多记不住?小白看这篇就够了!优质专栏数据库就该这样学爪哇外步篇 蓝桥杯马上就又开始了,赶紧准备准备以不至于被虐的太惨,从一个简单的算法题开始。t有n项任务,每项任务加工时间已知,从0时刻开始陆续安排到一台机器上加工,每个任务的完成时间是从0时刻到任务加工截止的时间,求总完成时间(所有任务完成时间之和)最短的安排方案...原创 2021-01-12 20:56:30 · 388 阅读 · 0 评论 -
经典递归问题-整数划分问题
“经典”一词只是对我这个小白而言,相比于另一个经典递归问题-汉诺塔,我认为这个问题理解起来也更难一些(其实汉诺塔当初我也不咋会写,在b站看了几个视频才有的头绪),下面,我们来看一下整数划分问题题目将一个正整数n表示成一系列正整数之和,n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥ 1,k ≥1正整数n的一个这种表示称为正整数n的一个划分。正整数n的不同划分个数称为正整数n的划分数,记做p(n)。如正整数6有如下11种不同的划分,所以p(6)=11。6;5+1;4+2,4+1+1;3.原创 2020-05-10 10:46:24 · 435 阅读 · 0 评论 -
动态规划-测试次数
写在前面:这是第一次写算法题,说的更详细点,第一次写关于动态规划的。学过数据结构、算法的,可能都知道,动态规划挺不简单的,对于我,一个算法小白来说,难度有多大呢?题都看不懂,以此呢,开始写一些关于动态规划的文章,一方面呢,对自己的了解程度有一个认识,其次呢,也是做一个笔记吧,每天呢,进步一点点就好了废话不多说,我们直接来看题目吧标题:测试次数x星球的居民脾气不太好,但好在他们生气的时候...原创 2020-04-04 21:45:36 · 410 阅读 · 0 评论 -
妈妈再也不用担心我不会STL了
工欲善其事,必先利其器,你不得不知道的C++标准模板库,它从广义上讲分为algorithm(算法),container(容器),iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法vector向量容器使用前提: 加入头文件< vector >常用方法:push_back 尾端插入新元素pop_back 删除尾端元素inse...原创 2020-04-24 21:51:45 · 201 阅读 · 0 评论 -
队列
上次,学习了特殊的线性表堆栈,我们再来学习一种特殊的线性表—队列,栈是只能在线性表一端进行插入和删除的一种特殊的数据结构,而队列呢?就如咱排队一样,在线性表的一端进行插入,在表的另一端进行删除的数据结构,它的用途也是很多的,比如二叉树的层次遍历了等等,下面,我们来看下队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和...原创 2020-02-28 12:49:46 · 142 阅读 · 0 评论 -
堆栈不是堆
我们来介绍下堆栈,在开始介绍之前,先区分开两种数据结构,堆和栈,区别如下在数据结构中,栈是一种线性表,而且是只可在表的一端进行插入和删除运算的线性表;而堆是一种树形结构,其满中树中任一非叶结点的关键字均不大于或不小于其左右子树的结点的关键字堆是一种特殊的线性表,其特殊在哪呢?特殊在只能在线性表的一端进行插入和删除操作,该图是百度百科中的解释基于顺序存储的栈代码实现如下//Stack.h...原创 2020-02-28 12:03:05 · 194 阅读 · 0 评论 -
线性表-链式存储结构
上次,我们学习了线性表的顺序存储结构,现在,我们再来看下线性表的链式存储结构,相比于顺序存储,链式存储结构在插入、删除等操作上降低了时间复杂度,但是在提取、求直接前驱和直接后继等操作上、没有线性表那么方便,这就需要我们必须熟练的掌握这两种存储方式,接下来,我们来看下链式存储结构的基本操作的实现...原创 2020-02-28 11:09:58 · 143 阅读 · 0 评论 -
线性表-顺序存储结构
今天,我们来学习第一种数据结构-线性表,什么是线性表呢?线性表是数据结构的一种,是n个具有相同特性的数据元素的有限序列,表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。它有四个特性集合中必存在唯一的一个“第一元素”;集合中必存在唯一的一个 “最后元素”;除最后一个元素之外,均有 唯一的后继(后件);除第一个元素之外,均有 唯一...原创 2020-02-28 10:54:52 · 187 阅读 · 0 评论 -
哈夫曼树
前面,我们学习了堆,我们再来看一下哈夫曼树,这么名气听起来感觉挺高大尚的,那什么是哈夫曼树呢?我们先来看一下百度百科中对它的解释给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。关于哈夫曼树,其最主要的应用是解决了编码问题,有兴趣的话可以...原创 2020-02-27 21:47:02 · 270 阅读 · 0 评论 -
最最最基本的-树的操作
树的建立先序建立二叉树BTree * PreCreateBTree(){ BTree *T; int elem; scanf("%d",&elem); if(elem==0) { T=NULL; }else { T=(BTree*)malloc(sizeof(BTree)); T->elem=elem; T->lchild=PreCre...原创 2020-02-27 16:07:04 · 364 阅读 · 0 评论 -
堆!
前面,我们学习了二叉搜索树,今天呢,我们来介绍下堆,堆是什么呢?堆是用数组实现的二叉树,分为最大堆和最小堆,两者的差别在于节点的排序方式,拿最大堆来说,父节点的值比每一个子节点的值都要大,这就是所谓的“堆属性”,该属性对每一个节点都成立。堆也是一种重要的数据结构,常用于:构建优先队列堆排序快速找出一个集合中的最小值(或者最大值)首先,我们来看下堆的结构定义typedef in...原创 2020-02-27 15:51:35 · 148 阅读 · 0 评论 -
二叉搜索树的添加、删除、查找、层次遍历(小白必看)
前面,写了二叉树的二叉树的构建(前序+中序)和二叉树的构建(后序+中序),这几篇都是数据结构小白必会的东西,今天再分享一篇#include <iostream>#include <stdlib.h>using namespace std;typedef int ElemType;struct Tree{ ElemType elem; Tree *lch...原创 2020-01-21 21:11:58 · 335 阅读 · 1 评论 -
表达式求值
#include <iostream>#include <string>#include <stdlib.h>using namespace std;#define MAXSIZE 60struct CharStack{ char data[MAXSIZE]; int top; };struct IntStack{ ...原创 2020-01-13 20:19:24 · 163 阅读 · 0 评论 -
约瑟夫生死游戏
/**************************************** 链表实现约瑟夫游戏 ***************************************/ #include <iostream>using namespace std;#include <stdlib.h>typedef struct Node{ int I...原创 2019-07-27 11:12:15 · 1763 阅读 · 0 评论 -
合并线性表(链式存储)
//合并线性表(链式存储)#include <iostream>using namespace std;#include <malloc.h>typedef int Elemtype;typedef struct Node{ Elemtype data; struct Node * next;}Node,*Ptr; //Ptr 一级指针type...原创 2019-06-10 10:53:24 · 1357 阅读 · 0 评论 -
合并线性表(顺序存储)
//合并线性表(顺序存储)#include <iostream>using namespace std;#include <windows.h>#include <malloc.h>#define LIST_INIT_SIZE 10#define LIST_INCREATMENT 2typedef int Elemtype;typedef stru...原创 2019-06-09 21:11:12 · 697 阅读 · 0 评论