摘要:
回溯思想,也可称为试探思想。一: 思想 有时我们要得到问题的解,先从其中某一种情况进行试探,在试探过程中,一旦发现原来的选择是错误的,那么就退回一步重新选择, 然后继续向前试探,反复这样的过程直到求出问题的解。二:场景 回溯思想是一个非常重要的思想,应用场景也是非常广泛。 ① “下棋”: 每一次走棋的位置都要考虑到是否是损人利己,如果是害人害己的走法就要回撤,找下一步损人利己的走法。 ② “迷宫”: 这种问题用试探法来解决相信我也不用向大家介绍了,其实迷宫问题抽象起来就是“对图的遍历问题“,当然对 图的遍历我先前的文章是有的,有兴趣的可以自己看一看。 阅读全文
摘要:
一、位运算应用口诀 清零取位要用与,某位置一可用或 若要取反和交换,轻轻松松用异或二、移位运算 1、它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2、"<<" 左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。 3、">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统,其值相当于除以2。 4、">>>"运算符,右边的位被挤掉,对于左边移出的空位一概补上0。三、位运算符的应用 (源操作数s 掩码mas 阅读全文
摘要:
/// <summary> /* * 枚举思想,这种思想也常是码畜,码奴常用的手段,经常遭到码农以上级别的鄙视,枚举思想可以说是在被逼无奈时最后的狂吼。 一: 思想 有时我们解决某个问题时找不到一点规律,此时我们很迷茫,很痛苦,很蛋疼,突然我们灵光一现,发现候选答案的问题规模在百万之内, 此时我们就想到了从候选答案中逐一比较,一直找到正确解为止。 二: 条件 前面也说了,枚举是我们在无奈之后的最后一击,那么使用枚举时我们应该尽量遵守下面的两个条件。 ① 地球人都不能给我找出此问题的潜在规律。 ② ... 阅读全文
摘要:
一: 概念 递归,说白了就是直接或者间接的调用自己的一种算法。它是把求解问题转化为规模较小的子问题,然后通过多次递归一直到可以得出结果 的最小解,然后通过最小解逐层向上返回调用,最终得到整个问题的解。总之递归可以概括为一句话就是:“能进则进,不进则退”。 二:三要素 <1> 递归中每次循环都必须使问题规模有所缩小。 <2> 递归操作的每两步都是有紧密的联系,如在“递归”的“归操作时”,前一次的输出就是后一次的输入。 <3> 当子问题的规模足够小时,必须能够直接求出该规模问题的解,其实也就是必须要有结束递归的条件。... 阅读全文