摘要: 原题链接:98. 分形之城 解题思路 递归+分治+数学坐标系公式+找规律 递归+分治好理解,因为这个题目中最显著的特点就是,不断地重复旋转复制,也就是N级城市,可以由4个N−1级城市构造,因此我们每次可以不断地分形N−1级,将问题范围不断地缩小即可 这道题目的数学坐标公式,其实一共有两个,一个是高中 阅读全文
posted @ 2020-12-18 18:55 hnkjdx_react 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 原题链接:97. 约数之和 解题思路 根据乘法分配律,AB的所有约数之和为: (1+p1+p12+...+p1BxC1)x(1+p2+p22+...+p2BxC2)x...x(1+pn+pn2+...+pnBxCn) 我们把改式展开,与约数集合比较。 上式中的每个括号内都是等比数列,如果使用等比数列 阅读全文
posted @ 2020-12-18 18:33 hnkjdx_react 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 原题链接:96. 奇怪的汉诺塔 解题思路: 首先考虑n个盘中3座塔的经典问题,设d[n]表示求解改n盘3塔问题的最少步数,显然有d[n]=2*d[n-1]+1,既把前n-1个盘子从A柱移动到B柱,然后把第n个盘子从A柱移动到C柱,最后把前n-1个盘子从B柱移动到C柱。 回到本题,设f[n]表示求解n 阅读全文
posted @ 2020-12-18 17:59 hnkjdx_react 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 原题链接:95. 费解的开关 解题思路: 在上述规则的01矩阵的点击游戏中,很容易发现三个性质: 1.每个位置至多被点击一次 2.若固定了第一行(不能再改变第一行),则满足题意的点击方案至多只有一种。 其原因是:当第i行某一位为1时,若前i行已经被固定,只能点击第i+1行该位置上的数字才能使得第i行 阅读全文
posted @ 2020-12-18 17:34 hnkjdx_react 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 原题链接:94. 递归实现排列型枚举 解题思路: 该问题也称全排列问题,所有可能的方案总数有n!种。在这里,递归需要求解的问题是“把指定的n个整数按照任意次序排列”,在每次递归中,我们尝试把每个可用的数作为数列中的下一个数,求解“把剩余的n-1个整数按照任意次序排列”这个规模更小的子问题 样例代码: 阅读全文
posted @ 2020-12-18 17:08 hnkjdx_react 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 原题链接:93. 递归实现组合型枚举 解题思路 根据92.递归实现指数型枚举里的思路,我们只需要在上面指数型枚举程序的calc函数开头添加以下这条语句即可: if (chosen.size() > m || chosen.size() + (n - x + 1) < m) { return; } 这 阅读全文
posted @ 2020-12-18 16:56 hnkjdx_react 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 原题链接:92. 递归实现指数型枚举 解题思路 这等价于每个整数可以选可以不选,所有可能的方案总数有2的n次方种,通过前两节的学习我们已经知道可以进行一次循环,利用位运算来列举所有的选择方案。这一次我们使用递归来求解,在每一次递归中分别尝试某个数“选”还是“不选”两条分支,将尚未确定的整数数量减少1 阅读全文
posted @ 2020-12-18 16:36 hnkjdx_react 阅读(90) 评论(0) 推荐(0) 编辑