算法
文章平均质量分 67
收录小部分算法,多是一时起意而作
L.Bubu
Went low went high what matters is now.
展开
-
二分搜索算法正确性判别
二分搜索算法的正确性判别。原创 2023-02-27 20:47:21 · 440 阅读 · 1 评论 -
半数集问题
半数集问题及其C++代码。原创 2023-02-27 20:38:48 · 938 阅读 · 0 评论 -
字典序问题
再是以bc开头、长度为3的字符串的总数,即字符串"bc[]"的数量;在求出num矩阵这里可以用一些小技巧,可以将复杂度降为两个循环,即添加sum和pre这两个变量,sum用于存储长度为len的字符串的总数量,计算好后会储存在num[len][0]处,这也正好将这一空闲空间利用了,而pre是储存储存长度为(len-1)且序号大于first的字符串总数,比如如果我们要求下图中的num[2][1](蓝色色块),即以a开头、长度为2的字符串数量,那么此时pre表示的就是红色色块中数字的总和。原创 2022-10-24 20:08:35 · 2217 阅读 · 0 评论 -
2019的分解方法
问题描述把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18和1001+1000+18被视为同一种。思路分析本题中,要求将2019分解成三个各不相同的数,且仅交换顺序被视为同一种方法,即(i + j + k)与(j + k + i)是同一种方法,既然如此,我们就规定i < j < k,再用循环计数即可。至于是否包含2和4的判断,有两种方法实现:第一种是直接将待判断数的原创 2021-12-11 22:52:14 · 1426 阅读 · 0 评论 -
可分区列表
问题描述如果列表中的两个索引之间有一个位置,一边的数字之和等于另一边的数字之和,我们就会将列表定义为可分区的。如:输入:第一行输入一个数字n,第二行输入n个数字 。输出:输出“True”或“False”,分别表示该数组(列表)可分区/不可分区。解题思路本题的基本思路就是把每个位置都试一遍,既然要判断是否有分界点,那就一个一个试,先将位置定好,将该位置前和该位置后的所有元素分别求和,判断是否相等,相等则可分区,所有位置都试完了还没有出现相等的情况则不能分区。这种思路通过两层循环即可实现,时间复杂度原创 2021-12-10 18:13:14 · 453 阅读 · 0 评论 -
递归函数之尾递归
什么是尾递归当我们了解递归函数后,也必然会了解递归函数的一些缺陷,那就是会造成栈的溢出,这主要是因为递归函数的调用原理:递归函数用栈来储存函数的运行状态,函数在进行一层层递归的同时,也在一层层压栈(入栈),当该函数返回时才会出栈。由于栈的储存空间是有限的,当调用的层数过多时,栈就会爆掉(溢出),从而函数也不能成功运行,尾递归的存在就是为了优化递归函数的这个问题,所以说,尾递归是一种优化递归函数的一种方式。怎么实现尾递归尾递归的实现方式很简单,当一个递归函数仅在函数返回时调用自己且仅返回自己的时候,我们原创 2021-10-24 11:51:57 · 519 阅读 · 0 评论