自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(164)
  • 资源 (37)
  • 收藏
  • 关注

原创 几道练习题十

第 1 题 【 问答题 】栈和队列都是常用的线性结构,它们都提供两个操作:Push:加入一个元素。Pop:弹出一个元素。不同的是,栈是”先进后出”,而队列则是”先进先出”。给出一个线性结构的进出顺序,判定这个结构是栈还是队列。时间限制:1000内存限制:65535输入第一行输入一个整数t,代表有t组测试数据 对于每组测试数据,第一行输入一个整数n,代表操作的次数。随后输入n行,每行包含两个整数 type val。

2024-04-24 16:01:13 499

原创 C++信奥教学PPT:CSP_S_数据结构之并查集

2024-04-24 15:47:45 38

原创 几道练手题九

先了解栈的两种基本操作,进栈push就是将元素放入栈顶,栈顶指针上移一位,等待进栈队列也上移一位,出栈pop是将栈顶元素弹出,同时栈顶指针下移一位。用一个过程采模拟进出栈的过程,可以通过循环加递归来实现回溯:重复这样的过程,如果可以进栈则进一个元素,如果可以出栈则出一个元素。队列是先进先出的:把队列看成横向的一个通道,则push k是将k放到队列的最右边,而pop则是从队列的最左边取出一个数。栈是后进先出的:把栈也看成横向的一个通道,则push k是将k放到栈的最右边,而pop也是从栈的最右边取出一个数。

2024-04-23 10:39:27 185

原创 C++浅谈八皇后问题中数据结构对算法的影响

无论是一维数组还是二维数组,仅仅是高层存储性质发生了变化,而底层算法流程一样。数据结构的变化,会影响访问方式的变化。设计良好的数据结构,访问起来即方便又便捷,且会节约 空间。而设计有缺陷的数据结构,不仅让访问变得冗余也会产生空间的浪费。看来学好数据结构很重要。解决问题之前,第一要素便是能数字化问题模型。

2024-04-23 10:36:31 939 1

原创 几道练习题八

在每一行的输出结果中, 多项式的每一项用“[x y]” 形式的字符串表示, x 是该项的系数、 y 是该项的幂数。需要检查的单词, 有的是词典中的单词, 有的与词典中的单词相似, 你的任务是发现这两种情况。分为两行, 第一行为一个数字 N(1

2024-04-21 20:29:19 863

原创 C++信奥教学PPT:CSP_J_算法之倍增算法

公众号:编程驿站。

2024-04-21 13:16:15 106

原创 C++信奥教学PPT:第二讲:CSP_S_数据结构之倍增(ST)表

但是仔细观察可以发现,380里面有许多实际上是被浪费的,可以采用如下策略优化:(1)C欠D和D欠A的一样,等于说C欠A是30,把D排除出去。二、我想我会给自己买个足球队(Think I’ll Buy Me a Football Team, Africa/Middle East-Arab and North Africa 2008, LA4367)银行之间会有一些循环债务,如图4.4(a)就显示了4个银行A~D之间的循环债务,A欠B50,B欠A150等,总共需要380来还清银行间所有的债务。

2024-04-19 09:49:57 503

原创 C++信奥教学PPT:CSP_J_算法之双指针算法(中)

□ C可以把1个美洲狮(c)变成1个蚂蚁(a)和1个海狸(b)。2、循环最大值(Maximum in the Cycle of 1, North America-Greater NY 2011,LA5807)如果P是整数序列1~n的一个排列,定义P中1循环最大值为P(1), P(P(1)),P(P(P(1)))…例如,假如P是如下的排列:|1 2 3 4 5 6 7 8||3 2 5 4 1 7 8 6|那么有:P(1)=3,P(P(1))=P(3)=5,P(P(P(1)))=P(5)=1。

2024-04-18 10:37:11 322

原创 几道简单的练习题七

有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。给定一个输入序列,判断栈空时弹出的元素构成的序列是否可能等于给定的序列,如果是则输出栈的操作过程,否则输出“NO”。每个测试样例的第一行是一个整数n,1 ≤ n ≤ 10000,其后n行每行是一个不超过10位的电话号码。在这个例子中,我们不可能拨通Bob的电话,因为Emergency的电话是它的前缀,当拨打Bob的电话时会先接通Emergency,所以这些电话号码不是一致的。给定一个长度为n(n

2024-04-17 11:14:16 338

原创 C++信奥教学PPT:CSP_S _基础算法之离散算法

公众号:编程驿站。

2024-04-17 10:48:43 175

原创 C++信奥教学PPT:基础算法之模拟算法

公众号:编程驿站。

2024-04-16 16:16:31 100

原创 几道简单的练手题六

在每一行的输出结果中,多项式的每一项用“[x y]”形式的字符串表示,x是该项的系数、y 是该项的幂数。1.对于两张卡牌,X1Y1与X2Y2,X1与X2表示A~D,Y1与Y2表示1~9,如果X1与X2不同,那么依照D>C>B>A的方式进行排序。输入分为两行,第一行为一个整数n,表示一共有n张牌(1

2024-04-15 16:46:58 437

原创 C++教学PPT:基础算法之递归算法

如果不存在对应的v,则查找context中所有符合以下条件的Morse编码CM:CM为M的前缀或者M为CM的前缀。从实现过程中来说,有一个公共的过程可以抽取:就是判断一个棋子是否可以从一个点p1直接水平或者垂直地走到另外一个点p2,中间有0个(车要吃子或者黑将直接将军)或者恰好1个棋子(红炮要将军)。红方除了有一个帅(G)之外还有3种可能的棋子:车(R)、马(H)、炮(C),并且需要考虑蹩马腿(如图2.7所示)和将与帅不能照面(将帅如果同在一条直线上,中间又不隔着任何棋子的情况下,走子的一方获胜)的规则。

2024-04-15 16:44:53 503

原创 C++教学PPT:基础算法之分治算法

给你一个数,问你所有的划分方式,比如4,4=1+3,4=1+1+2,4=2+2,4=1+1+1+1。我们来分析一下,我们想用分治的话,就要找子问题,假设n是要划分的数,m说最大的加数,n=4,m=3。分解成两类的子问题,一个是:一个是有m的情况,一个是没有m的情况,然后将有m的情况继续划分,分解成有m-1和没有m-1的情况,一直划分下去,直到m=1。比如n=4,m=3,划分成的子问题:有3,无3,有2,无2,有1,无1(没有意义,除非0+4=4),将这些子问题合并起来大问题就解决了。

2024-04-13 22:49:54 306

原创 C++ 教学PPT:基础算法之贪心算法

现在告诉你这一排共 n 个商店(标号为 0 到 n-1)每个商店里的商品总数,每次小 Z 会带一批共 p 个游客的旅游团,到其中 u 号商店和 v 号商店之间逛一逛,请你帮小 Z 在所逛的商店区间内选择一个,告诉小 Z 他最多能获赠多少件商品。第二个旅游团, 3 个人,小 Z 选择带他们去 4 号商店,共 8 件商品,每人买 2 件商品(因为每人 3 件不够),剩下 2 件,小 Z 最多获赠就是 2 件。若去 1 号商店,共 2 件商品,每人买 1 件,剩 0 件。所以,小 Z 最多获赠 0 件。

2024-04-12 11:13:12 791

原创 C++教学PPT,基础算法之穷举算法

(注意,“lanqiao”字样可以是不同大小写字母的组合,例如:LanQIAO、LanQiao等)输出描述:输出该字符串中“lanqiao”字样出现的次数。输入描述:输入正整数a、b、c(0

2024-04-11 10:00:39 255

原创 C++ 教学PPT:基础算法之二分算法

输⼊:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20 输出:false。比如在有序数组 nums = [2,3,5,7]中搜索 target = 4,搜索左边界的二分算法会返回 2,带入上面的说法,都是对的。输入:nums=[5,7,7,8,8,10],target=8输出:2。输入:nums=[5,7,7,8,8,10],target=6。

2024-04-11 09:54:22 272

原创 练手系列题五

如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的名字,数字、名字之间都用一个空格分隔。此后每行包含一个字符串和两个整数,分别表示学生的名字(名字第一个字母大写,其余小写,不含空格,且长度小于20)和出生月(1 ≤ m ≤ 12)日(1 ≤ d ≤ 31)。在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日。

2024-04-08 17:17:30 629

原创 C++ 圆周率的几种求解方法

公众号:编程驿站圆周率的常见几种求解算法,包括但不仅仅包含特卡洛模拟、割圆法和公式法。本文讲解这几种算法的实现流程。

2024-04-08 17:14:32 1043

原创 练手题之四

你为阿福提供了一张大魔王根据地的地图,上面标记了阿福和公主所在的位置,以及一些不能够踏入的禁区。输入的第一行是一个整数T,表示测试用例的数量,接下来是T个测试用例的输入 每个测试用例输入的第一行是两个正整数m(0 < m

2024-04-06 16:40:35 651

原创 C++不知算法系列之滑动指针

双指针搜索算法,常见的有左右双指针;快慢双指针;先后双指针以及多指针……其中还包括一类滑动指针。滑动指针也称为滑动窗口指针,其搜索实现即有灵性又透着优雅。本文通过几个案例聊聊滑动指针。滑动指针也是双指针的一个特殊实现。右指针一路开疆拓土,当边疆到达指定的区域的大小后,左指针缩小窗口,尽可能找到最好的区域。

2024-04-06 16:37:35 1029

原创 C++练手题

个位置(最左边的坐标是 1), 然后它们的父结点的横坐标, 在两个子结点的中间。/出现的横坐标位置为父结点的横坐标偏左一格, \出现的横坐标位置为父结点的横坐标偏右一格。中缀表达式可能含有小写字母代表变量(a-z), 也可能含有运算符(+、-、 *、 /、 小括号), 不含有数字, 也不含有空格。第三部分有 n 行, 每行格式为 C x, C 为变量的字符, x 为该变量的值。有三种输入1)push n n是整数(0

2024-03-28 15:29:26 354

原创 C++离散与组合数学之如何让错排列一步错,步步错!

错排列是排列里的特殊数体。本文和大家聊聊错排列的定义以及如何枚举出所有的错排列。现实生活中,错排列的应用也较广泛,研究错排列可以丰富对排列现组合相关知识的认知。了解了错排列概念以及相关算法,用下面的案例实践一下,看掌握程度如何。4位厨师聚餐时,各做了一道拿手菜,现在每人去品尝一道菜,但是不能品尝自己做的那道菜,共有多少 不同的品尝方法?题意求错排列的数量,可以直接使用通项公式。除了本文讨论的全错排列,即所有数字不在与此数字相同的位置。也有部分错排列,即n个数字中有m个错排列。

2024-03-28 15:20:32 399

原创 C++练手题系列二

一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。接下来是一个n * n的矩阵,矩阵中的元素为.或者#。输入的第一行是一个整数T,表示测试用例的数量,接下来是T个测试用例的输入 每个测试用例输入的第一行是两个正整数m(0 < m

2024-03-19 15:06:39 395

原创 C++ 离散与组合数学之多重集合

数论是计算机学科的基础,将以一系列文章讨论组合数学中的一些概念,包括多重集合、等价类、多重集上的排列、错排列、圆排列、鸽巢原理、二项式定理、容斥原理、卡特兰数。本文主要是讨论集合以及多重集合的概念以及多重集合上的排列问题。集合概念为研究群体事物提供了强有力的理论基础。集合是离散与组合数学中重要概念。计算机的穷举思维建立在集合以及对集合的排列组合基础之上。

2024-03-19 15:02:53 1054

原创 C++练手题系列一

第 1 题 【 问答题 】• 有多少种二叉树输入n(1

2024-03-03 20:03:36 376

原创 C++练手题

个位置(最左边的坐标是 1), 然后它们的父结点的横坐标, 在两个子结点的中间。/出现的横坐标位置为父结点的横坐标偏左一格, \出现的横坐标位置为父结点的横坐标偏右一格。二叉树结点编号从 1到 n, 根结点为 1, n

2024-03-03 20:01:33 582

原创 C++初等数论

数学知识的根基对学好编程至关重要。本文和大家讲讲在编程中要用到的数论知识。如同余式、欧拉定理和欧拉函数、费马小定理、威尔逊定理、裴蜀定理、模运算意义下的逆元、扩展欧几里得算法、孙子定理(中国剩余定理)。除了理解数论概念,更重要能融会贯通。把对数论相关知识的认知运用到编程领域。

2024-03-02 16:09:42 751

原创 C++拿几道题练练手吧

在各自城市居住了一段时间后,他们都感到了一些厌倦,想去看看其他人的生活究竟如何,于是他们都选择到另一个同学所在城市去旅游,并且希望旅游的城市各不相同,他们想知道有多少种不同的方案,可是数量实在太多了,他们无法计算出来,你能帮助他们吗。第n+2行为一个整数m,表示图中连线的个数。经过若干次转发以后,很可能A分享了一条好友C的状态,而C的这条状态实际上是分享B的,但A与B可能并不是好友,即A通过C间接分享了B的状态。N的01矩阵,若矩阵的第i行第j列是1,表示这两个人可能间接转发对方的状态,0则表示不可能。

2024-02-25 16:09:18 2142 1

原创 C++ 离散化算法设计原则:压缩的都是精华

本文聊聊离散化算法,当数据趋于离散分布,而且,计算时只在意数据的相对值时,可以使用此算法。

2024-02-25 16:07:42 1136

原创 几道简单的C++练手题

对于每个周期,我们会给出从当前年份的第一天开始,到出现高峰的天数(不一定是第一次高峰出现的时间)。第一行一个整数T, 表示有T组数据 对于每组测试数据, 第一行三个整数n, m, S, 表示有n个点, m条边, 起点为S. 接下来m行, 每行三个整数x, y, z, 代表从x到y有长度为z的边 点的编号从1到n T

2024-02-21 14:15:03 369

原创 C++ 八数码问题理解 `IDA*` 算法原则:及时止损,缘尽即散

八数码是典型的状态搜索案例。如字符串转换问题、密码锁问题都是状态搜索问题。状态搜索问题指由一种状态转换到到最终状态,求解中间需要经过多少步转换,或者说最小需要转换多少步,或者说有多少种转换方案。本文和大家聊聊八数码问题的IDA*算法解决方案,也是想通过此问题,深入理解IDA*算法的的底层思维逻辑。行文之初,本是想同时使用A*双向BFSIDA*算法解决八数码问题。如果仅在文中抛出IDA*的代码,行文的意义不大。内心终究是想借此题来深度研究算法细节,探讨此算法的精妙之处。

2024-02-21 14:12:47 1004

原创 几道简单的练习题

第三行包含整数R, 1

2024-02-18 12:06:57 450

原创 C++启发式搜索算法(A*),给你一点阳光,你一定要灿烂哟!

给小孩子出一道数学题,在他不知所措,没有头绪时,你给他点提示。也许这点提示可以让他灵光一现,找到一点光亮,少一些脑回路,快速找到答案。这便是启发的作用。启发式搜索又称为有信息搜索,是利用问题拥有的启发信息来引导搜索,达到减少搜索范围、降低问题复杂度的目的,这种利用启发信息的搜索过程称为启发式搜索。启发式搜索的目的是减少搜索的不必要性,搜索的本质是无目地性的。对于原始搜索算法,搜索之初,并不知道搜索的目标具体在何方,所以,需要朝所有方向搜索,一旦找到便结束搜索。显然,必然会有些搜索是吃亏不讨好的。

2024-02-18 11:44:03 1063

原创 几道简单的题目练一下手感

第 1 题 【 问答题 】• 找和为K的两个元素在一个长度为n(n < 1000)的整数序列中,判断是否存在某两个元素之和为k。时间限制:1000内存限制:65536输入第一行输入序列的长度n和k,用空格分开。第二行输入序列中的n个整数,用空格分开。输出如果存在某两个元素的和为k,则输出yes,否则输出no。样例输入9 10样例输出Yes第 2 题 【 问答题 】

2024-02-16 12:07:03 825

原创 C++ 双向广度搜索,嚯嚯!不就是双指针理念吗

在线性数据结构中搜索时,常使用线性搜索算法,但其性能偏低下,其性能改善方案常有二分搜索和双指针或多指针搜索算法。在复杂的数据结构如树和图中,常规搜索算法是深度和广度搜索。在深度搜索算法过程中常借助剪枝或记忆化方案提升搜索性能。广度搜索算法过程中常见的性能优化方案为双向广度搜索和启发式搜索。双向广度搜索可以认为是图论中的双指针搜索方案,本文将和大家深入探讨其算法细节。图中常见的操作为最短路径查找。如在下面的无向无权重图中查找节点1到节点6之间的最短路径,可以直接使用广度搜索算法找到。//邻接矩阵。

2024-02-16 12:00:57 1126

原创 单调栈,左右各一次,求左或右相邻的最大和最小值

数组中的所有元素都要入栈一次和出栈一次,除了最后一个特殊元素;当一个元素即将出栈时,记住整个栈内元素具有单调性,很多时候需要利用这个特性去做计算;使用单调栈即可以求解当前数字右边第一个最大或最小数字,也可以求解左边第一个最大或最小数字。下面是求这四个值的代码。单调递减:从原数组的右边向左边遍历入栈操作,可以找到当前数字左边第一个比之小的数字。单调递增:从原数组的右边向左边入栈操作,可以找到当前数字左边第一个比之大的数字。单调递减:从原数组的左边向右边入栈操作,可以找到当前数字右边第一个比之小的数字。

2024-01-25 15:06:43 408

原创 不搜索,无问题。冗余、上下界剪枝

本文讲述了如何在深度搜索时,减少搜索分支,即剪枝优化。可以从多方面优化。本文主要讲解冗余剪枝,即把无用的分支跳过。另就是上下边界剪枝。下指从所有子节点中找到最贴近的起始节点,上界从从所有子节点中找出最佳的结束节点。

2024-01-25 14:11:10 952 2

原创 C++图论之强连通图

强连通分量算法还有算法。有兴趣者可自行了解。

2023-12-26 12:48:04 1065

原创 零散的记录

/填格子(动态规划(归纳)算法:20 世纪之后最优秀算法之一)//重载 > operator(运算符) operator>for(int j=1;j++) //j 列号。//数组:1、只能存储同类型的数据 2、长度是固定的。//n行数,m 列数。//创建一个新的节点(头结点)//添加新的节点(头部插入)//原来的尾节点后面跟新节点。//容器:1、可以任意长度。//比较两个变量数据大小。//创建一个新的节点。//创建一个新的节点。//新节点成为尾节点。// //初始化工作。

2023-12-20 16:57:26 921

动态规划入门动态规划入门

动态规划入门动态规划入门动态规划入门动态规划入门动态规划入门

2023-01-06

动态规划入门动态规划入门动态规划入门动态规划入门

动态规划入门

2023-01-06

C++数学与算法系列之排列和组合

C++数学与算法系列之排列和组合

2023-01-01

C++ 数学与算法系列之认识格雷码

讲解格雷码之前,首先了解一下格雷码的定义: • 对数据编码后,若任意两个相邻的码值间只有一位二进制数不同,则称这种编码为格雷码(Gray Code)。 • 由于最大数与最小数之间也仅只有一位数不同,即首尾相连,又称循环码或反射码。

2023-01-01

C++不知算法系列之排序从玩转冒泡算法开始

所谓排序,就是把数据群体按个体数据的特征按从大到小或从小到大的顺序存放。 排序在应用开发中很常见,如对商品按价格、人气、购买数量等排序,便于使用者快速找到数据。

2022-12-29

C++ 不知算法系列之从希尔、归并排序算法中的分治哲学聊起

排序算法中,冒泡、插入、选择属于相类似的排序算法,这类算法的共同点:通过不停地比较,再使用交换逻辑重新确定数据的位置。 希尔、归并、快速排序算法也可归为同一类,它们的共同点都是建立在分治思想之上。把大问题分拆成小问题,解决所有小问题后,再合并每一个小问题的结果,最终得到对原始问题的解答。 Tips: 通俗而言:化整为零,各个击破。 分治算法很有哲学蕴味:老祖宗所言 合久必分,分久必合,分开地目的是为了更好的合并。

2022-12-29

C++ 数学与算法系列之高斯消元法求解线性方程组

什么是消元法? 消元法是指将多个方程式组成的方程组中的若干个变量通过有限次地变换,消去方程式中的变量,通过简化方程式,从而获取结果的一种解题方法。 消元法主要有代入消元法、加减消元法、整体消元法、换元消元法、构造消元法、因式分解消元法、常数消元法、利用比例性质消元法等。

2022-12-29

C++数学与算法之初等数论

C++数学与算法之初等数论

2022-12-27

java多线程教学PPT

中信教育科技教学PPT,学生和老师可以用来进行参考……

2017-08-30

java网络编程PPT

中信教育科技教学教案PPT,学生和老师都可以参考。

2017-08-30

用C#贪吃蛇,用C#贪吃蛇.用C#贪吃蛇

本人在网上看到一个用java编写的贪吃蛇游戏后用C#模仿写一个C#版的。 希望大家提出建议。

2009-08-27

ip地址管理与子网划分

ip地址管理与子网划分

2008-01-14

一套用vb开发的语音系统

一套用vb开发的语音系统

2008-01-14

Asp.Net Web自定义报表

Asp.Net Web自定义报表

2008-01-14

asp.net服务器控件高程

asp.net服务器控件高程

2008-01-14

C#程序100实例

C#程序100实例C#程序100实

2008-01-14

Microsoft.NET 精髓(PDG)

Microsoft.NET 精髓(PDG)

2008-01-14

mysql中文手册完全版

mysql中文手册完全版

2008-01-14

架设mp3服务器

架设mp3服务器服务器

2008-01-14

网络恶意代码安全手册

网络恶意代码安全手册

2008-01-14

asp中文参考手册

asp中文参考手册asp中文参考手册

2008-01-14

实现两台路由器数据连接

实现两台路由器数据连接

2008-01-14

asp经典百例

asp经典百例,asp经典百例,

2008-01-14

CSharp语言参考

CSharp语言参考

2008-01-14

精通c#与asp.net程序设计

精通c#与asp.net程序设计

2008-01-14

Asp.net实用案例教程

Asp.net实用案例教程

2008-01-14

ASP.NET正式版开发者指南电子版(原书售99元美金)

ASP.NET正式版开发者指南电子版(原书售99元美金)

2008-01-14

ASP.NET_XML深入编程技术

ASP.NET_XML深入编程技术

2008-01-14

ADO 程序员参考

ADO 程序员参考,ADO 程序员参考

2008-01-14

用JavaScript制作动画

用JavaScript制作动画

2008-01-14

server-u 服务器全功略

server-u 服务器全功略

2008-01-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除