数据结构&算法
文章平均质量分 88
数据结构或算法的知识
滑技工厂
我们的目标,是滑天下之大技~~嘤嘤嘤
展开
-
自己还不会的堆排序
自己还不会的堆排序堆排序定义分析之前堆排序我只听说过,但是还一直没有学到,这次来学习一下。堆排序定义百度百科给出的定义:是指利用堆这种数据结构所涉及的一个算法…(这不没说吗)那我们就来说说堆是什么吧堆:堆通常是一个可以被看做一颗完全二叉树的数组对象,它的特点是子节点的键值或索引总是小于等于(或大于等于)它的父节点。(这么说就是要么一定比父节点及其直属关系(我发明的词懂就好)的节点大或小咯)根节点最大的堆叫最大堆或大根堆,根节点最小的堆叫最小堆或小根堆,对左右子节点的大小关系没有要求。分析原创 2021-02-04 10:12:41 · 195 阅读 · 0 评论 -
活动安排问题(贪心、Java)
活动安排问题(贪心、Java)问题分析代码又是好久没更,最近一直在忙杂七杂八的,更一个算法作业吧。问题X轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。或者设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<fi。如果选择了活动i,则它在半开时间区间[si ,fi )内占用资源。若区原创 2020-06-05 18:00:33 · 806 阅读 · 1 评论 -
图像压缩问题(Java)
图像压缩问题(Java)好久没更了,屯了好久,这次依旧是算法作业。分析我就不说了,直接上网图。这里这篇博客我看网上没有这个问题的动态规划代码,我就更新一次吧。/** * @ClassName ImageCompress * @Description 图像压缩问题 * @author 滑技工厂 https://blog.csdn.net/qq_41718454 * @date 2020/5/23 * @version 1.0 */public class ImageCompress原创 2020-05-23 15:09:17 · 1327 阅读 · 4 评论 -
矩阵连乘问题的递归、自底向上、自顶向下(Java)
矩阵连乘问题 Java分析:矩阵链乘法问题描述:给定由n个矩阵构成的序列{A1,A2,…,An},对乘积A1A2…An,找到最小化乘法次数的加括号方法。1)寻找最优子结构此问题最难的地方在于找到最优子结构。对乘积A1A2…An的任意加括号方法都会将序列在某个地方分成两部分,也就是最后一次乘法计算的地方,我们将这个位置记为k,也就是说首先计算A1…Ak和Ak+1…An,然后再将这两部分的结...原创 2020-04-26 11:40:30 · 2332 阅读 · 3 评论 -
蓝桥杯练习题——Sine之舞
蓝桥杯练习题——Sine之舞问题分析代码好久没做蓝桥杯的训练了,昨天做一道今天更一篇问题问题描述 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功。所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力。 不妨设 An=sin(1–sin(2+sin(3–sin(4+…sin(n))…) Sn=(…(A1+n)...原创 2020-04-16 09:38:06 · 423 阅读 · 0 评论 -
给定平面上N个点的坐标,找出距离最近的两个点(Java)
给定平面上N个点的坐标,找出距离最近的两个点(Java)说实话这道题不太会,以下讲解转自一篇博客,代码转自另一篇(真是太菜了没脸见人了。。。)问题:平面点集求其中距离最近的两个点及其距离。思路:采用分治法,将“求n个点之间最小距离”问题划分为很多个“求n/t个点之间最小距离”问题。(1)将lstPoint根据X坐标由小到大排序得到点集pointsSortedX,方法很多,冒泡、选择、插入、...原创 2020-03-28 15:35:42 · 8530 阅读 · 1 评论 -
线性时间选择算法(Java)
线性时间选择算法(Java)线性时间选择算法方法一分析代码方法二线性时间选择算法最近算法课的知识点之一,自己以前没遇见过(是我菜了没错),这次写一篇。那么什么是线性时间选择呢???一句话,在线性时间内完成选择。一般情况下是这样的,我们想要找出一个数组中的最大值或最小值,那就只需要一次排列,然后输出第一个或最后一个元素就行了,但如果是要找出一个数组中的第k小的元素呢?在某些特殊情况下,...原创 2020-03-26 17:51:46 · 6480 阅读 · 1 评论 -
归并排序(合并排序)Java
将两个顺序序列合并成一个顺序序列的方法。原创 2020-03-23 14:47:49 · 473 阅读 · 0 评论 -
蓝桥杯校内模拟赛
蓝桥杯校内模拟赛模拟赛1200000的约数GB转MB多少个92019个结点的二叉树递增三元组的中心数位递增元音辅音单词小明的空地特殊的正整数序列晚会节目模拟赛我的18号上午的比赛,题目顺序和一些细节可能和现在网上的不一样。我是按照我的顺序写的。因为不能直接提交判题,所以我也不知道我写的对不对,发现不对的请评论区指正。做之前我也没想到蓝桥杯还可以有填空题,这种就不用受运行时间和内存的限制了,...原创 2020-03-18 18:00:42 · 14253 阅读 · 1 评论 -
棋盘覆盖问题
棋盘覆盖问题问题分析代码依旧是一期算法作业,有个棋盘覆盖问题,直接来废话不多说问题在一个2k×2k(k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。显然,特殊方格在棋盘中可能出现的位置有4k种,因而有4k种不同的棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠。用到多少个L型骨牌...原创 2020-03-13 17:26:22 · 445 阅读 · 4 评论 -
整数划分的递归实现算法,并输出所有划分(Java)
整数划分的递归实现算法,并输出所有划分(Java)依旧是算法作业,这次是整数划分问题。在网上找了半天,大多都是求整数划分有多少种,很少求详细的划分情况。有也都是C语言版的,并找不到Java的。于是我便想出一个Java的(其实差不多,只是如果有人需要Java版的方便搜到)...原创 2020-03-08 15:45:53 · 4245 阅读 · 3 评论 -
字符串移位包含问题
字符串移位包含问题问题分析代码这是这次算法作业里逻辑最简单的。。。但是我还是只想到了暴力我好蠢。。。问题给定两个字符串s1和s2,要求判断s2是否能够被通过s1做循环移位(rotate)得到的字符串包含。例如,S1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。分析最初想法十分愚蠢,大概就是换一次顺序就比较一次,是否包含。这样每次都要比...原创 2020-03-07 15:30:24 · 872 阅读 · 1 评论 -
破损的键盘(悲剧的文本)Java UVa11988
破损的键盘(悲剧的文本)Java UVa11988题目分析Java代码还是算法作业之一,这次其实是一个acm题。网上查了一下,编号是UVa11988。废话不多说,直接上题。题目你有一个破损的键盘。键盘上所有的键都可以正常工作,但有时候Home键或者End键会自动按下。你并不知道键盘存在这一问题,而是专心打稿子,甚至连显示器都没打开。当你打开显示器后,展现在你面前的是一段悲剧文本。你的任务是在...原创 2020-03-07 11:30:38 · 343 阅读 · 1 评论 -
递归求单链表中倒数第k个结点
递归求单链表中倒数第k个结点这次算法课留的作业之一,递归求单链表中倒数第k个结点又是有关单链表的,正好用上上次做逆置的类了(逆置)说下我最初的想法吧。自己还是单纯,脑子磨不过这个弯来。先用一个指针flag遍历整个单链表得到长度length用length-k,得到第二个指针index移动到目标结点(倒数第k个)的次数设置一个计数器count。index每移动一次,count便+1。直...原创 2020-03-07 09:18:13 · 3766 阅读 · 0 评论 -
不得不说的全排列算法递归实现
不得不说的全排列算法递归实现我真的是菜啊,留的算法作业几乎没有一次自己写出来过…都是要上网看别人的博客才能懂,自己好笨好菜,????????????一个序列{a,b,c},求这个序列的全排列呢。相信大家动下膝盖就能想到是这个答案。那么序列{a,b,c,d}呢,它的全排列是什么我不知道,但是我知道所有以d开头的排列方式。眼熟就对了,他就是abc的全排列开头加上d。这样就很清楚了,每个字母开头,后面都是...原创 2020-02-27 17:36:19 · 390 阅读 · 2 评论 -
二进制中“1”的个数
二进制中“1”的个数除2余1问题是这样的,对于一个字节(8bit)的无符号整型变量,求其二进制表示中“1”的个数除2余1原创 2020-02-26 11:41:44 · 462 阅读 · 0 评论 -
递归逆置带头结点的单链表_C/C++&Java
递归逆置带头结点的单链表_C/C++&Java这周的算法作业之一,逆置这步倒不是很难想。逆置这步就先递归到最深层,让尾巴指向自己的父节点,然后返回到父节点,让node.next.next指向node就可以实现指向父节点,之后每返回到上层就这样执行,所以递归调用代码要在node.next.next = node 这行代码之前执行。但是昨晚有两个问题没想出来,就一直困扰着我。怎么让头...原创 2020-02-25 16:52:08 · 3618 阅读 · 5 评论 -
阿克曼函数Ackerman
阿克曼函数Ackerman同样是算法课后小作业,之前还没见过这个函数(是我孤陋寡闻了)阿克曼函数(Ackermann)是非原始递归函数的例子。它需要两个自然数作为输入值,输出一个自然数。它的输出值增长速度非常快,仅是对于(4,3)的输出已大得不能准确计算。递归公式上代码,这是递归方法,acm用这个方法的话通常会超时,因为一般m=3这个数就很大要算很多次的,所以一般m都取0~3 publ...原创 2020-02-19 11:10:03 · 1839 阅读 · 2 评论 -
斐波那契数列Fibonacci
斐波那契数列Fibonacci算法课后的一个小作业,实现起来也不是很难理解,给自己记录一下,就直接来吧。斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34等在数学上,斐波那契数列以如下被以递推的方法...原创 2020-02-19 10:33:06 · 318 阅读 · 2 评论 -
求两数最大公约数和最小公倍数
求两数最大公约数和最小公倍数辗转相除法更相减损法今天下午第一节算法课留的小作业,顺手做了吧。最大公约数和最小公倍数的概念就不解释了,暴力法也不说了不可取。这里说下辗转相除法。辗转相除法辗转相除法,是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。假设m > n,公式:gcd(m, n) = gcd(n, m mod n)就是说m和n的最大公约数 = n和m/n的余数的,直...原创 2020-02-10 21:51:42 · 883 阅读 · 3 评论 -
最快过桥问题
最快过桥问题背景题目问题化我最初的想法解析背景今天第一天开学,下午上了算法的第一节直播课,老师出了几道题。其他的问题还好,有道过桥题我一看竟然没啥头绪??等下课我去问老师,老师先是把我当成问毕设的学生,解释之后到现在也没回我。我寻思着不能吊死在老师这啊,要上网多找几棵树,总算找到一个比较清晰的、我也能理解的(我蠢其他很多C++代码看不懂)题解,在这里分享并说出我的理解。题目4个人在晚上过一...原创 2020-02-10 21:17:44 · 538 阅读 · 2 评论