摘要: 递归算法, 真是一个解决问题最为直白的算法, 但是,递归如果不进行一番转换的话, 直接进行递归编码的话, 真的要命, 至少, 现在, 我的电脑就消耗不了, 因为, 不断的递归, 意味着, 你内存空间中, 不断的建立栈空间, 少数还好说, 可是, 再ACM上大多数都是那种非常大的数字。 因此, 递归需要非递归模拟。 再模拟之前, 我想说, 有时候, 递归真的执行效率很高, 当O为log级别的, 基本上用递归, 就可以实现, 举个例子, 二分查找法, 10亿个数, 估算了一下, 递归的次数不过50次,总之, 很划算, 递归也不是一无是处。 下面开始我们的递归模拟。 迭代模拟: 任何... 阅读全文
posted @ 2012-07-31 20:40 黑色包裹 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 其实, 递推问题本质上就是一个动态发展的问题, 在原有基础之上去分析问题, 然后, 找出递推公式, 之后, 从递推公式得出通项公式(不妨这样说), 那么, 在几何方面, 递推公式的应用, 我想, 主要是平面和空间分割问题。 下面从 http://www.cnblogs.com/zlyblog/ 摘要该类问题。(1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须. 阅读全文
posted @ 2012-07-31 11:32 黑色包裹 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 在百度百科中, 对错排问题有如下描述:当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用M(n)表示,那么M(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推. 第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法; 第二步,放编号为k的元素,这时有两种情况.1,把它放到位置n,那么,对于剩下的n-2个元素,就有M(n-2)种方法;2,不把它放到位置n,这时,对于这n-2个元素,有M(n-1)种方法; 综上得到 M(n)=(n-1)[M(n-2)+M(n-1)] 特殊地,M(1)=0,M(2)=1 下面通过这个递推关系推导... 阅读全文
posted @ 2012-07-31 11:24 黑色包裹 阅读(367) 评论(0) 推荐(0) 编辑