递归与递推
。
Kanna_STELLA
逸一时 误一世 逸久逸久罢已零
展开
-
枚举时对数组操——三刷AcWing 95. 费解的开关
这次三刷主要是试了下枚举情况操作数组时,操作复制了原数组的新数组,而不是备份原数组,操作原数组,还原原数组,第一次使用略有卡壳。// 如果是对备份后的原数组操作,只要在操作前备份原数组,然后在一轮枚举的末尾还原原数组就可以了。/ 卡壳点:枚举时对数组操作,如果是对复制出来的数组操作,一定要在开始枚举但还没开始操作的时候来复制数组。原创 2023-03-21 21:21:06 · 262 阅读 · 0 评论 -
费解的开关笔记
/ 卡壳,括号处理出问题了,这里的括号把下面的部分全包住了;原创 2023-03-19 10:52:22 · 109 阅读 · 0 评论 -
(二分)730. 机器人跳跃问题
/ 递推,枚举每一个台阶,然后对mid操作,每次操作后判断mid是否跳出了0~1e5的区间,小于0return false,大于0return true;// 这里我用了浮点二分,mid = (l + r) / 2,最后再手动写了个向上取整的句子,所以没有wa,可能是题目数据太弱。// 向上取整 mid的表示要写成l + r + 1 >> 1即可,向下取整 mid = l + r >> 1。// 因为f[i]max = 1e5,所以只要mid>1e5,直接return true就可以了。原创 2023-03-11 10:10:12 · 358 阅读 · 0 评论 -
(dfs剪枝)(递归)1209. 带分数
100=3+69258 / 714,通过枚举其中两个数就可以求出第三个数,通过判断第三个数用到的数字有没有出现过或者有没有0,还要判断算上第三个数中用到的数字,所有数字是否都用过了就可以知道是否符合题意。根据这句话得知此题是要枚举情况然后判断情况合不合题意,合则加种数,由于是求种类数 而不是最优解,此题更适合用dfs递归。4.通过两个dfs的嵌套可以实现同时枚举两个数字,但时间复杂度非常高,最好要进行剪枝(dfs参数符合某种情况时直接return)9作为时间复杂度中的n,n原创 2023-03-08 00:05:07 · 89 阅读 · 0 评论 -
递归实现的三种枚举
对没选过的数,可以直接选或者不选,所以往选和不选两个方向递归。bool数组记录选不选当前情况,递归时没选过就直接选。//通过保证递增来保证枚举的情况不和之前的情况重复。通过数组记录每个数字的选择情况:未决定,选,不选。递归参数是当前要做选择的数。1~n里·选m个的所有情况。递归参数写当前在选第几个数。bool数组记录选择情况。原创 2023-03-07 23:31:56 · 215 阅读 · 0 评论 -
八皇后(dfs全排列)
沿着树根向下递归,到树根的尽头后就开始回溯到上一个树根分叉点,然后向右递归直到全部区域被遍历过。流程都在代码注释里说明了。每次到达树根尽头就输出。原创 2022-11-30 14:16:38 · 173 阅读 · 3 评论