C++编程之美
文章平均质量分 81
一枚大果壳
编程驿站 等你来
展开
-
几道练手题十六
第 1 题 【 问答题 】• 城堡问题(图 1)原创 2024-06-13 11:26:04 · 380 阅读 · 0 评论 -
CSP_J_真题之 2023 第一轮笔试(一)
公众号:编程驿站。原创 2024-06-13 11:24:10 · 315 阅读 · 0 评论 -
几道练手题十五
你为阿福提供了一张大魔王根据地的地图,上面标记了阿福和公主所在的位置,以及一些不能够踏入的禁区。字符S表示阿福所在的位置,字符E表示公主所在的位置,字符#表示不能踏入的禁区,字符$表示传送门,字符.表示该位置安全,数字字符0至4表示了宝石的类型。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。每组数据第一行是n和m,n表示有n门课程,m表示有m组依赖关系,接下来的m行是依赖关系的具体信息a b,表示第a门课程依赖第b门课程。原创 2024-05-30 13:52:11 · 356 阅读 · 0 评论 -
欧拉通路和欧拉回路算法
欧兰通路,欧拉回路原创 2024-05-30 13:46:53 · 207 阅读 · 0 评论 -
几道练手题十四
建议先做预处理,即以“12345”作为初始状态做一遍彻底的广搜,找出“12345”经合法变换能够到达的所有字符串,并记录到达这些字符串各需要多少步操作。第一行由两个部分组成,分别为糖果箱数正整数n(1 = n = 100),驯鹿能承受的最大重量正整数w(0 w 10000),两个数用空格隔开。圣诞节来临了,在城市A中圣诞老人准备分发糖果,现在有多箱不同的糖果,每箱糖果有自己的价值和重量,每箱糖果都可以拆分成任意散装组合带走。N=0表示输入结束。对于100%的数据,1=N=18,1=Ci=W=10^8。原创 2024-05-25 11:18:41 · 434 阅读 · 0 评论 -
几道练习题十三
对于每组数据,第一行包括两个整数:m(1原创 2024-05-25 11:15:02 · 300 阅读 · 0 评论 -
CSP_S_数据结构之 笛卡尔树
原创 2024-05-16 09:51:56 · 90 阅读 · 0 评论 -
CSP_S_数据结构之 字典树
在这里插入图片描述。原创 2024-05-15 17:20:02 · 146 阅读 · 0 评论 -
C++纯C实现贪吃蛇小游戏
【代码】C++纯C实现贪吃蛇小游戏。原创 2024-05-11 20:54:57 · 358 阅读 · 0 评论 -
C++图书管理系统代码(简单)
【代码】C++图书管理系统代码(简单)原创 2024-05-11 17:17:15 · 798 阅读 · 0 评论 -
C++ 一款纯C实现的打砖块小游戏
【代码】C++ 一款纯C实现的打砖块小游戏。原创 2024-05-11 17:14:42 · 581 阅读 · 0 评论 -
几道练手题十二
1.对于两张卡牌,X1Y1与X2Y2,X1与X2表示A~D,Y1与Y2表示1~9,如果X1与X2不同,那么依照D>C>B>A的方式进行排序。输入分为两行,第一行为一个整数n,表示一共有n张牌(1原创 2024-05-08 21:33:35 · 779 阅读 · 0 评论 -
C++信奥教学PPT:CSP_J_算法之 冒泡、插入、选择排序算法
公众号:编程驿站。原创 2024-05-08 21:31:13 · 205 阅读 · 0 评论 -
几道练手题十一
令Picowso感到十分沮丧的是,她的竞争对手Moonet似乎弄明白了如何复制她的这些一维画作,Moonet会画一些不相交的间隔,等待这些颜色晾干,然后再画另外的一些间隔,直到画完。在这个例子中,我们不可能拨通Bob的电话,因为Emergency的电话是它的前缀,当拨打Bob的电话时会先接通Emergency,所以这些电话号码不是一致的。输入分为两行,第一行为一个整数n,表示一共有n张牌(1原创 2024-04-29 14:08:47 · 333 阅读 · 0 评论 -
C++信奥教学PPT:CSP_J_算法之 高精度数值处理算法
公众号:编程驿站。原创 2024-04-29 14:06:27 · 366 阅读 · 0 评论 -
C++ 验证一下,你对递归是不是一知半解
无递归,不算法。无论怎样强调递归的重要性,都不为过。受限于计算机的思维能力,计算机的计算找答案的过程就是在不停试错、纠正错误的过程,类似于爱迪生发明灯炮。递归能帮助我们在不知道计算边界的情形下试错。多函数求解过程,相当于多人协助完成一件事情,必然会有半成品的相互传递和再加工过程。了解递归的内部细节,对于正确使用递归将有巨大帮助。当放大递归过程的每一处细节,并能利用好每一处细节。递归所到之处,但无坚不摧了。原创 2024-04-25 15:35:27 · 1029 阅读 · 0 评论 -
几道练习题十
第 1 题 【 问答题 】栈和队列都是常用的线性结构,它们都提供两个操作:Push:加入一个元素。Pop:弹出一个元素。不同的是,栈是”先进后出”,而队列则是”先进先出”。给出一个线性结构的进出顺序,判定这个结构是栈还是队列。时间限制:1000内存限制:65535输入第一行输入一个整数t,代表有t组测试数据 对于每组测试数据,第一行输入一个整数n,代表操作的次数。随后输入n行,每行包含两个整数 type val。原创 2024-04-24 16:01:13 · 878 阅读 · 0 评论 -
C++信奥教学PPT:CSP_S_数据结构之并查集
原创 2024-04-24 15:47:45 · 98 阅读 · 0 评论 -
几道练手题九
先了解栈的两种基本操作,进栈push就是将元素放入栈顶,栈顶指针上移一位,等待进栈队列也上移一位,出栈pop是将栈顶元素弹出,同时栈顶指针下移一位。用一个过程采模拟进出栈的过程,可以通过循环加递归来实现回溯:重复这样的过程,如果可以进栈则进一个元素,如果可以出栈则出一个元素。队列是先进先出的:把队列看成横向的一个通道,则push k是将k放到队列的最右边,而pop则是从队列的最左边取出一个数。栈是后进先出的:把栈也看成横向的一个通道,则push k是将k放到栈的最右边,而pop也是从栈的最右边取出一个数。原创 2024-04-23 10:39:27 · 260 阅读 · 0 评论 -
C++浅谈八皇后问题中数据结构对算法的影响
无论是一维数组还是二维数组,仅仅是高层存储性质发生了变化,而底层算法流程一样。数据结构的变化,会影响访问方式的变化。设计良好的数据结构,访问起来即方便又便捷,且会节约 空间。而设计有缺陷的数据结构,不仅让访问变得冗余也会产生空间的浪费。看来学好数据结构很重要。解决问题之前,第一要素便是能数字化问题模型。原创 2024-04-23 10:36:31 · 1247 阅读 · 1 评论 -
几道练习题八
在每一行的输出结果中, 多项式的每一项用“[x y]” 形式的字符串表示, x 是该项的系数、 y 是该项的幂数。需要检查的单词, 有的是词典中的单词, 有的与词典中的单词相似, 你的任务是发现这两种情况。分为两行, 第一行为一个数字 N(1原创 2024-04-21 20:29:19 · 903 阅读 · 0 评论 -
C++信奥教学PPT:CSP_J_算法之倍增算法
公众号:编程驿站。原创 2024-04-21 13:16:15 · 165 阅读 · 0 评论 -
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 · 539 阅读 · 0 评论 -
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 · 371 阅读 · 0 评论 -
几道简单的练习题七
有两个字符串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 · 353 阅读 · 0 评论 -
C++信奥教学PPT:CSP_S _基础算法之离散算法
公众号:编程驿站。原创 2024-04-17 10:48:43 · 221 阅读 · 0 评论 -
C++信奥教学PPT:基础算法之模拟算法
公众号:编程驿站。原创 2024-04-16 16:16:31 · 151 阅读 · 0 评论 -
几道简单的练手题六
在每一行的输出结果中,多项式的每一项用“[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 · 465 阅读 · 0 评论 -
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 · 543 阅读 · 0 评论 -
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 · 349 阅读 · 0 评论 -
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 · 861 阅读 · 0 评论 -
C++教学PPT,基础算法之穷举算法
(注意,“lanqiao”字样可以是不同大小写字母的组合,例如:LanQIAO、LanQiao等)输出描述:输出该字符串中“lanqiao”字样出现的次数。输入描述:输入正整数a、b、c(0原创 2024-04-11 10:00:39 · 298 阅读 · 0 评论 -
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 · 297 阅读 · 0 评论 -
C++ 圆周率的几种求解方法
公众号:编程驿站圆周率的常见几种求解算法,包括但不仅仅包含特卡洛模拟、割圆法和公式法。本文讲解这几种算法的实现流程。原创 2024-04-08 17:14:32 · 1343 阅读 · 0 评论 -
练手题之四
你为阿福提供了一张大魔王根据地的地图,上面标记了阿福和公主所在的位置,以及一些不能够踏入的禁区。输入的第一行是一个整数T,表示测试用例的数量,接下来是T个测试用例的输入 每个测试用例输入的第一行是两个正整数m(0 < m原创 2024-04-06 16:40:35 · 661 阅读 · 0 评论 -
C++不知算法系列之滑动指针
双指针搜索算法,常见的有左右双指针;快慢双指针;先后双指针以及多指针……其中还包括一类滑动指针。滑动指针也称为滑动窗口指针,其搜索实现即有灵性又透着优雅。本文通过几个案例聊聊滑动指针。滑动指针也是双指针的一个特殊实现。右指针一路开疆拓土,当边疆到达指定的区域的大小后,左指针缩小窗口,尽可能找到最好的区域。原创 2024-04-06 16:37:35 · 1045 阅读 · 0 评论 -
C++练手题
个位置(最左边的坐标是 1), 然后它们的父结点的横坐标, 在两个子结点的中间。/出现的横坐标位置为父结点的横坐标偏左一格, \出现的横坐标位置为父结点的横坐标偏右一格。中缀表达式可能含有小写字母代表变量(a-z), 也可能含有运算符(+、-、 *、 /、 小括号), 不含有数字, 也不含有空格。第三部分有 n 行, 每行格式为 C x, C 为变量的字符, x 为该变量的值。有三种输入1)push n n是整数(0原创 2024-03-28 15:29:26 · 380 阅读 · 0 评论 -
C++离散与组合数学之如何让错排列一步错,步步错!
错排列是排列里的特殊数体。本文和大家聊聊错排列的定义以及如何枚举出所有的错排列。现实生活中,错排列的应用也较广泛,研究错排列可以丰富对排列现组合相关知识的认知。了解了错排列概念以及相关算法,用下面的案例实践一下,看掌握程度如何。4位厨师聚餐时,各做了一道拿手菜,现在每人去品尝一道菜,但是不能品尝自己做的那道菜,共有多少 不同的品尝方法?题意求错排列的数量,可以直接使用通项公式。除了本文讨论的全错排列,即所有数字不在与此数字相同的位置。也有部分错排列,即n个数字中有m个错排列。原创 2024-03-28 15:20:32 · 508 阅读 · 0 评论 -
C++初等数论
数学知识的根基对学好编程至关重要。本文和大家讲讲在编程中要用到的数论知识。如同余式、欧拉定理和欧拉函数、费马小定理、威尔逊定理、裴蜀定理、模运算意义下的逆元、扩展欧几里得算法、孙子定理(中国剩余定理)。除了理解数论概念,更重要能融会贯通。把对数论相关知识的认知运用到编程领域。原创 2024-03-02 16:09:42 · 951 阅读 · 0 评论 -
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 · 2157 阅读 · 1 评论