- 博客(14)
- 收藏
- 关注
原创 【算法学习笔记|C++|递归】深度优先搜索解决排列组合问题
给出两个整数n, m,数组由[1,n][1,n][1,n]的所有整数构成并且是有序的,输出CmnC_m^nCmn以及AmnA_m^nAmn的所有情况,例如:若n=4,m=3,则组合为:1 2 31 2 41 3 42 3 4若n=3,m=2,则排列为:1 21 32 33 23 12 1讨论n=3,m=3的情况,我们作出这幅图:让我们先从排列讲起。我们作出了一个树状图,现在我们将问题转化成这种形式:我们有一个长度为3的数组,那么第i位索引上应该放上什么数字呢?显然对于这个数
2024-11-27 23:05:44
850
原创 【洛谷刷题记录|P1928|C++】普通的递归
有了防护伞,并不能完全避免 2012 的灾难。地球防卫小队决定去求助外星种族的帮助。经过很长时间的努力,小队终于收到了外星生命的回信。但是外星人发过来的却是一串密码。只有解开密码,才能知道外星人给的准确回复。解开密码的第一道工序就是解压缩密码,外星人对于连续的若干个相同的子串X会压缩为[DX]的形式(D是一个整数且1≤D≤99),比如说字符串CBCBCBCB就压缩为[4CB]或者[2[2CB]],类似于后面这种压缩之后再压缩的称为二重压缩。如果是则是三重的。
2024-11-20 23:57:55
714
原创 【算法学习笔记/C语言】归并排序的递归写法
其实我认为“将数组分割再合并”的说法非常令人费解,因为这样就会让人有“把两个数组传进一个函数,这个函数去把这两个数组首尾相接拼起来”的感觉,这种操作如何用递归实现?我还没有探索过。实际上可以理解成,含n个元素的一个数组arr,我们先是有n个指针指着各个元素,然后两个两个比较大小/对调元素,接下来指针减半(两个指针之间间隔一个位置),然后4个一组,每组有两个指针,进行比大小与对换元素的操作,然后指针再减半,以此类推。
2024-11-01 09:56:19
823
原创 【洛谷刷题记录/C语言】初识分治递归
宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站立的地方外的所有地方盖上,美丽漂亮聪慧的公主就是他的人了。再看16x16的情况,它可以分成4个8x8,而公主就在这四个区域的某一处,既然如此,就可以在那一块区域的角落先放上一个地毯,再去考虑那一块8x8方块的情况,如此一来就可以写出递归的条件了。再看看题目的示意图,我们把公主所在的那个4x4方块填满以后,就要在四角再补充一个地毯,先考虑2x2的情况,这是很简单的。之间用一个空格隔开)。
2024-10-27 22:24:37
780
原创 【LeetCode刷题记录/C++】初识位运算bitset
给你一个整数数组 rewardValues,长度为 n,代表奖励的值。最初,你的总奖励 x 为 0,所有下标都是 未标记 的。你可以执行以下操作 任意次 :从区间 [0, n - 1] 中选择一个 未标记 的下标 i。如果 rewardValues[i] 大于 你当前的总奖励 x,则将 rewardValues[i] 加到 x 上(即 x = x + rewardValues[i]),并 标记 下标 i。以整数形式返回执行最优操作能够获得的 最大 总奖励。
2024-10-26 19:54:26
1761
原创 【LeetCode刷题记录/Python】刷题记录之被动态规划折磨一整天,已破防
这道题用0和1的flag判断能不能取到值,与我最开始想的用二维数组的每个节点记录最大值有点出入,也是在这里卡了很久。第一次比较系统地接触算法,第一次了解到动态规划,以上只是一点浅显的看法。
2024-10-25 21:56:40
2267
原创 【LeetCode刷题记录/Python】找到连续赢 K 场比赛的第一位玩家
有 n 位玩家在进行比赛,玩家编号依次为 0 到 n - 1。给你一个长度为 n 的整数数组 skills 和一个 正 整数 k ,其中 skills[i] 是第 i 位玩家的技能等级。skills 中所有整数 互不相同。所有玩家从编号 0 到 n - 1 排成一列。比赛进行方式如下:队列中最前面两名玩家进行一场比赛,技能等级 更高 的玩家胜出。比赛后,获胜者保持在队列的开头,而失败者排到队列的末尾。这个比赛的赢家是 第一位连续 赢下 k 场比赛的玩家。请你返回这个比赛的赢家编号。
2024-10-24 19:48:01
364
原创 【LeetCode刷题记录/C语言】构成整天的下标对数目 II
解题之前没有注意数据范围导致没有一开始就用必然超时的做法没有注意数据范围导致定义变量用int而不是更高精度。
2024-10-23 11:20:43
935
原创 【LeetCode刷题记录】使二进制数组全部等于一的最小操作数
给你一个二进制数组 nums。你可以对数组执行下操作次(也可以 0 次):选择数组中 任意 一个下标 i ,并将从下标 i 开始一直到数组末尾 所有 元素 反转。反转 一个元素指的是将它的值从 0 变 1 ,或者从 1 变 0。请你返回将 nums 中所有元素变为 1 的 最少 操作次数。
2024-10-19 11:53:04
933
原创 【洛谷刷题记录】车站
火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上、下车,但上、下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人。从第3站起(包括第3站)上、下车的人数有一定规律:上车的人数都是前两站上车人数之和,而下车人数等于上一站上车人数,一直到终点站的前一站(第n−1站),都满足此规律。现给出的条件是:共有n个车站,始发站上车的人数为a,最后一站下车的人数是m(全部下车)。试问x站开出时车上的人数是多少?
2024-10-17 11:44:06
638
1
原创 【洛谷刷题记录】幂次方
任何一个正整数都可以用2的幂次方表示。例如 $137=23+2^0 $。同时约定次方用括号来表示,即ab可表示为ab。由此可知,137可表示为27232072222021用2表示),并且3220。所以最后137可表示为222220))2220))20。又如1315210282521所以1315最后可表示为22220))222220)))22220))220。
2024-10-17 10:23:00
1997
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅