![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
个人题解心得
文章平均质量分 56
昨日余光
Kami之人,北海月光
展开
-
c++ list的一些操作心得
最近写了一道list的题目,经典约瑟夫环问题。如下:试题 算法提高 找出出卖耶稣的人资源限制时间限制:1.0s 内存限制:256.0MB问题描述 耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3…。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒请使用双向链表实现编写该程序,依次输出出局人的编号。输入格式 无输出格式 输出13行,前12行分别是按顺序出局的人的编号。第13行输出叛徒的原创 2021-09-18 18:12:42 · 106 阅读 · 0 评论 -
如何用c++实现全排列功能(模拟next_permutation和prev_permutation)
前言众所周知,c++中标准库已经包含了这两个排列的函数。即,next_permutation()和prev_permutation()但我觉得研究一下排列对算法来说绝对是有益无害,同时也能让我们在解题中更加顺手。通晓原理才是永远的神~PS::不过实际解题中,效率最关键,最好还是直接使用排序函数。上一个排列prev_permutation()函数要实现这个函数,我们得了解我们是如何判断上一个排列的。举个例子,21045的上一个排列是20541.。发现规律了嘛?当前的这个数5->4-&g原创 2021-08-04 16:08:02 · 287 阅读 · 0 评论 -
最短路 SPFA算法
试题 算法训练 最短路资源限制时间限制:1.0s内存限制:256.0MB问题描述 给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。输入格式 第一行两个整数n, m。接下来的m行,每行有三个整数u, v, l,表示u到v有一条长度为l的边。输出格式 共n-1行,第i行表示1号点到i+1号点的最短路。 样例输入 3 3 1 2 -1 2 3 -1 3 1 2SPFA算法简介全名为shortest path fa.原创 2021-07-26 15:16:50 · 140 阅读 · 0 评论 -
dijkstra算法,真的不能计算负权值吗?
很多人都知道dijkstra算法不能计算负权值。但是不是所有人都深刻地认识了这一原因。以下面的例子为例:如果用dijkstra算法来计算最短路径,一定会出错。因为按照dijkstra算法,它的原则是基于贪心进行查找,所以它的查找顺序应该是:BEDC。造成的结果就是:找到第二个节点时,就会直接判断E的最短路径为-3.并且后续节点的查找也不会改变这个值。但是显然,我们知道E的最短路径为-4.出现这种情况的根本原因是,负环(含负值的环)出现。导致贪心的查找逻辑无法继续成立。用通俗的话来说,就是面原创 2021-07-26 11:07:20 · 7575 阅读 · 6 评论 -
蓝桥杯 最短路问题 dijkstra算法负权值计算
原题如下:试题 算法训练 最短路资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。输入格式第一行两个整数n, m。接下来的m行,每行有三个整数u, v, l,表示u到v有一条长度为l的边。输出格式共n-1行,第i行表示1号点到i+1号点的最短路。样例输入3 31 2 -12 3 -13 1 2样例输出-1-2数据规模与约定对于1原创 2021-07-24 17:48:43 · 1028 阅读 · 0 评论 -
vector快速存图 存图的方法 数据结构
简单引入存图的方法,主流的是4种。分别是利用二维数组、构建邻接表、前向星、和链式前向星。第一种二维数组的存图方式,优点是非常方便,只需要定义一个二维数组,就可以很快速的存图、和方便的读取。但是它的缺点也非常明显,就是容易造成空间的大量浪费。在实际解题中,一旦数据量超过一万个结点,就可以直接放弃,否则很容易爆内存。第二种构建邻接表,空间和时间复杂度都可以接受,查找比二维数组稍慢,但是不会浪费空间。是常用的一种存图方式,但是缺点是,需要自己构建邻接表的数据结构,因此尤其对于刚学习邻接表的新手来说,不太友原创 2021-07-24 16:49:41 · 3253 阅读 · 0 评论 -
一遍搞定!关于如何已知后序和中序序列得到前序序列的问题
首先来个具体的问题吧,因为只是空谈显示不出效果。如题:求先序排列资源限制时间限制:1.0s 内存限制:256.0MB问题描述 给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。输入格式 两行,每行一个字符串,分别表示中序和后序排列输出格式 一个字符串,表示所求先序排列样例输入 BEADC EBDCA样例输出ABECD解题思路关于这题其实解体思路很多,但是目前我发现最简单的只有一种。先从一种最常规的解法思原创 2021-07-20 11:18:53 · 1425 阅读 · 0 评论 -
无重复字符串的最长字串问题分析
题目如下给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一原创 2021-07-15 15:22:08 · 216 阅读 · 0 评论 -
个人心得——hanoi问题 汉诺塔问题详细分析
简单地介绍题目点进来的各位其实也应该不陌生了,三根柱子,N个圆盘,要求把所有的圆盘从第一根柱子放到第三根上,并且编号下面的圆盘不能放在编号上的圆盘上。这个问题其实知乎上有很多答主都答得不错,这里我想分析一下自己的一些收获。如何理解hanoi的逻辑我们都知道,hanoi塔在计算机语言中是一种递归的逻辑。很多人在关注这种递归的时候往往喜欢一步一步的追踪,以此来弄明白它的内层逻辑,简单地说,就是顺藤摸瓜,一步步推。但是要想简单快速的理解递归,这种方式是不提倡的。比如这题,O(2*n)的复杂度,4个盘子就原创 2021-07-14 15:40:27 · 1443 阅读 · 0 评论