world is simple

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  Algorithm and Data Structures

摘要:1、求1~N的全排列 (1)我们先从最简单的例子看起:1,2 两个数的情况,显然有1--2, 2--1,两种排列,即1和2交换一下。 1,2,3 三个数的情况: 1--2--3 1--3--2 //固定第一个数,递归的求后两个数的组合,2和3交换一下 2--1--3 //1,2 交换 2--3--1 //固定2, 递归求两个数的组合,交换1,3 3--2--1 //1和3交换 3--1--2 //固定3, 递归求两个数的组合,交换2,1 将上述过程转换为代码:View Codetemplate<classT>voidpermutation(T*array,intn){permuta 阅读全文
posted @ 2012-04-24 19:05 worldisimple 阅读(1307) 评论(0) 推荐(1)

摘要:题目描述: 已知一个长度为N的字符串,只由0和1组成, 求一个最长的子串,要求该子串出0和1出现的次数相等。 要求算法时间复杂度尽可能的低。 比如: 1000010111000001,加粗的部分有4个0、4个1思路:(1) 最简单的想法就是遍历所有的子串,之后判断该子串是否满足条件 N^2子串,每个子串扫一遍判断0、1是否出现的次数相等,复杂度为O(N^3) 稍加思考就会发现, 如果一个长度为n的子串满足条件,加么这n个元素的和 加起来一定=(n/2) 这样在循环的过程中,增量加就可以了,不需要每个子串从头计算,复杂度降为O(N^2); 伪码: 输入 A[N]View Code... 阅读全文
posted @ 2012-04-13 00:05 worldisimple 阅读(5219) 评论(2) 推荐(0)