
C++
文章平均质量分 58
三金C_C
我一路向北,离开有bug的季节…
展开
-
动态规划专项三
动态规划是非常值得训练的,结合了众多的算法思想在其中,例如递归、回溯、深搜等等。前两次得动态都是非常容易的,比较能看出状态转移方程的,然而今天的2个经典算法有些难度。动态规划专项一,点击此处动态规划专项二,点击此处这次专项是经典的算法问题,值得回味。目录n皇后问题0-1背包问题n皇后问题不说了,这个问题还进了知乎,想看的可以点击此处问题描述:说到这个N-皇后问题,就不得不先提一下这个历史上著名的8皇后问题啦。八皇后问题,是一个古老而著名的问题.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848原创 2021-11-15 22:56:21 · 716 阅读 · 0 评论 -
深搜广搜专训一
最近学了图的遍历,关于其中的算法详情请见此处关于深搜和广搜是非常重要的,对一些矩阵和图的遍历起到不错的作用。下面以一些题目来训练,其中每道题都尽量给出深搜和广搜的2种做法。习题目录Red and Black (hdu1312)Oil Deposits(poj 1241)Red and Black (hdu1312)题目描述1:输入由多个数据集组成。一个数据集以包含两个正整数W和h的行开始;W和H分别是x和y方向上的块数。W和H不超过20。 数据集中还有H行,每行包括W个字符。每个字符表示一个瓷砖的颜原创 2021-11-14 17:24:03 · 478 阅读 · 0 评论 -
数据结构实验五(图的遍历)
题目描述:分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历。下面邻接矩阵和邻接表均以下图为例,其中已标注了正确的dfs,bfs顺序图和相关的表示法。几句话明白深度与广度搜索:深度优先就像你被困在了迷宫里面,想要出去必须一路走到底,直到走不通了才回溯,重点是回溯。而广度优先就像你丢了眼睛,看不清的时候满地寻找,辐射范围大。上次实验四哈夫曼树全部完整代码见此处邻接矩阵存储图MGraph.cpp#include <iostream>#include <queue>原创 2021-11-13 23:18:18 · 2128 阅读 · 1 评论 -
算法设计工具——STL
C++中已经实现了数据结构中的很多容器和算法,它们构成了C++库的子集,即标准模板类库。STL是一个功能强大的基于模板的容器库。遵循“尽可能使用STL而不是自己实现”,下面整理STL的一些使用方法便于搜索。(之前已经整理了一些例如map)持续更新中ing,未完待续(只能抽时间来写)你的三连就是我创作的最大动力。目录STL概述STL迭代器顺序容器vectorstringSTL概述STL只要由容器,算法和迭代器。迭代器用于存放元素。下面给出常用的数据结构。算法主要由数据结构说明原创 2021-11-04 23:04:36 · 545 阅读 · 1 评论 -
串运算C与C++
题目描述 写一个函数将顺序串s1中的第i个字符到第j个字符之间的字符用s2串替换思路分析: 类比插入,在插入函数中,要留出位置插入要插入的字符串,所以要保留原位置的数据,而对于替换,只需要插入,不用管原先的位置即可。 然而有很多情况,这里考虑情况较少,下面附C++与C代码不同语言编写,同时一个使用链串一个使用顺序串,以此巩固学习。 C++代码,建立LinkString Class,其中用到运算符重载,作用是赋字符串。#include <iostream>#define MA原创 2021-09-27 18:23:45 · 377 阅读 · 1 评论 -
括号匹配问题(栈)C++
题目描述 在一个表达式中含有圆括号或方括号等来表示运算的优先级,将这些括号提取出来就构成了括号序列 例如:表达式[(A+B)*C]-[E-F] 其括号序列为[()][]合法的括号序列称为匹配序列,不合法的括号序列称为不匹配序列。匹配序列示例:([()]) [] ()[()] ,不匹配序列示例:([()] ] (][()],那么如何判断一个括号序列是否为匹配序列呢?请用栈的结构来进行验证。分析抓住栈的特性:先进后出,后进先出。即一边遍历一边判断,将左类型括号如( [ {,进行入栈操作,当遇到右类型括原创 2021-09-21 10:32:09 · 1289 阅读 · 0 评论 -
关于循环链表的快慢指针C++
题目描述1、设计一个尽可能高效的算法,找到单链表的中间结点。2、设计算法,判断单链表是否有环。(提示:通过快慢指针判断)分析: 题目暗示使用快慢指针进行编译,什么叫快指针慢指针?顾名思义,就是快与慢的区别,不过根据问题一,可以假定快指向head->next->next,而慢指向head->next,这样当快指针指向NULL时,慢指针就到中间了。不过写的算法中有些小瑕疵,当长度为奇数时正确,当是偶数的时候我选择返回中间后面一个,而不是两个。 什么叫单链表有环,通俗来说,假定有原创 2021-09-15 17:54:27 · 300 阅读 · 1 评论 -
幸运数C++(使用Vector)
题目描述 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。 首先从1开始写出自然数1,2,3,4,5,6,…1 就是第一个幸运数。我们从2这个数开始。把所有序号能被2整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 …把它们缩紧,重新记序,为:1 3 5 7 9 … 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, …此时7为第3个幸运数,然原创 2021-07-28 17:38:03 · 1756 阅读 · 1 评论