- 博客(186)
- 资源 (37)
- 收藏
- 关注
原创 几道练手题十五
你为阿福提供了一张大魔王根据地的地图,上面标记了阿福和公主所在的位置,以及一些不能够踏入的禁区。字符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 410
原创 几道练手题十四
建议先做预处理,即以“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 456
原创 几道练手题十二
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 838
原创 几道练手题十一
令Picowso感到十分沮丧的是,她的竞争对手Moonet似乎弄明白了如何复制她的这些一维画作,Moonet会画一些不相交的间隔,等待这些颜色晾干,然后再画另外的一些间隔,直到画完。在这个例子中,我们不可能拨通Bob的电话,因为Emergency的电话是它的前缀,当拨打Bob的电话时会先接通Emergency,所以这些电话号码不是一致的。输入分为两行,第一行为一个整数n,表示一共有n张牌(1
2024-04-29 14:08:47 373
原创 C++ 验证一下,你对递归是不是一知半解
无递归,不算法。无论怎样强调递归的重要性,都不为过。受限于计算机的思维能力,计算机的计算找答案的过程就是在不停试错、纠正错误的过程,类似于爱迪生发明灯炮。递归能帮助我们在不知道计算边界的情形下试错。多函数求解过程,相当于多人协助完成一件事情,必然会有半成品的相互传递和再加工过程。了解递归的内部细节,对于正确使用递归将有巨大帮助。当放大递归过程的每一处细节,并能利用好每一处细节。递归所到之处,但无坚不摧了。
2024-04-25 15:35:27 1066
原创 几道练习题十
第 1 题 【 问答题 】栈和队列都是常用的线性结构,它们都提供两个操作:Push:加入一个元素。Pop:弹出一个元素。不同的是,栈是”先进后出”,而队列则是”先进先出”。给出一个线性结构的进出顺序,判定这个结构是栈还是队列。时间限制:1000内存限制:65535输入第一行输入一个整数t,代表有t组测试数据 对于每组测试数据,第一行输入一个整数n,代表操作的次数。随后输入n行,每行包含两个整数 type val。
2024-04-24 16:01:13 900
原创 几道练手题九
先了解栈的两种基本操作,进栈push就是将元素放入栈顶,栈顶指针上移一位,等待进栈队列也上移一位,出栈pop是将栈顶元素弹出,同时栈顶指针下移一位。用一个过程采模拟进出栈的过程,可以通过循环加递归来实现回溯:重复这样的过程,如果可以进栈则进一个元素,如果可以出栈则出一个元素。队列是先进先出的:把队列看成横向的一个通道,则push k是将k放到队列的最右边,而pop则是从队列的最左边取出一个数。栈是后进先出的:把栈也看成横向的一个通道,则push k是将k放到栈的最右边,而pop也是从栈的最右边取出一个数。
2024-04-23 10:39:27 276
原创 C++浅谈八皇后问题中数据结构对算法的影响
无论是一维数组还是二维数组,仅仅是高层存储性质发生了变化,而底层算法流程一样。数据结构的变化,会影响访问方式的变化。设计良好的数据结构,访问起来即方便又便捷,且会节约 空间。而设计有缺陷的数据结构,不仅让访问变得冗余也会产生空间的浪费。看来学好数据结构很重要。解决问题之前,第一要素便是能数字化问题模型。
2024-04-23 10:36:31 1286 1
原创 几道练习题八
在每一行的输出结果中, 多项式的每一项用“[x y]” 形式的字符串表示, x 是该项的系数、 y 是该项的幂数。需要检查的单词, 有的是词典中的单词, 有的与词典中的单词相似, 你的任务是发现这两种情况。分为两行, 第一行为一个数字 N(1
2024-04-21 20:29:19 917
原创 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 594
原创 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 432
原创 几道简单的练习题七
有两个字符串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 369
原创 几道简单的练手题六
在每一行的输出结果中,多项式的每一项用“[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 473
原创 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 628
原创 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 404
原创 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 938
原创 C++教学PPT,基础算法之穷举算法
(注意,“lanqiao”字样可以是不同大小写字母的组合,例如:LanQIAO、LanQiao等)输出描述:输出该字符串中“lanqiao”字样出现的次数。输入描述:输入正整数a、b、c(0
2024-04-11 10:00:39 345
原创 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 325
原创 练手系列题五
如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。每组生日相同的学生,输出一行,其中前两个数字表示月和日,后面跟着所有在当天出生的学生的名字,数字、名字之间都用一个空格分隔。此后每行包含一个字符串和两个整数,分别表示学生的名字(名字第一个字母大写,其余小写,不含空格,且长度小于20)和出生月(1 ≤ m ≤ 12)日(1 ≤ d ≤ 31)。在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的名字,出生月日。
2024-04-08 17:17:30 647
C++ 数学与算法系列之认识格雷码
2023-01-01
C++不知算法系列之排序从玩转冒泡算法开始
2022-12-29
C++ 不知算法系列之从希尔、归并排序算法中的分治哲学聊起
2022-12-29
C++ 数学与算法系列之高斯消元法求解线性方程组
2022-12-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人