算法
sinkary
这个作者很懒,什么都没留下…
展开
-
提取字符串中的整数
今天写了个,记在这: #include #include static int getNextInt( char* str, int *curp ) { int retInt = -1; int weight = 1; int num_begin, num_end; int pointer = *curp; num_begin = num原创 2012-09-21 11:37:52 · 743 阅读 · 0 评论 -
八皇后递归求解问题
昨天在同济医学院参加DeNA宣讲及笔试,最后一题为八皇后递归求解填空,不懂。 今天在上网搜索并认真思考后,在此做一个总结。 求解思路: 棋盘为8行8列,从第0行开始放第一个皇后,设放在第 i 列,接下来, 逐个放其余7行,这个前提保证所有皇后均不在同一行。 还需保证所有皇后不在同一列,这需要用到数组 col[i],0 因为我们已在第 0 行的第 i 列放了皇后,我原创 2011-11-24 12:02:40 · 927 阅读 · 0 评论 -
两段已序子数组 就地排序
问题描述 输入:数组 a,分成两段;第一段长度为 m,已序,第二段长度为 n,已序 要求:将整个数组 a 排列为全部有序,只使用一个临时变量,即空间复杂度为 O(1) 解决思路 设定数组 a[m+n],第一段为 a[i], 0 方法:将第二段的元素依次插入到第一段已序的子数组中,即特殊的插入排序。 何时插入过程结束? 分两种情况: 1、当第二段最后一个元素 a[m+n原创 2013-09-02 09:15:46 · 732 阅读 · 0 评论 -
折半插入排序之边界分析
折半插入排序的基本思想是,从已排好序的子数组中快速查找待插入点。 设计折半插入排序的难点在于对边界的处理,怎么判断循环终止条件可以保证没有错误,并且更加清晰和有条理。 为描述方便,设插入元素的关键字为 v,关键字数组为 K。 (规定若 v = K[m],找高半区。子数组下标从 1 开始,长度为 len。) 当子数组变成只有两个元素时, 不妨表示为:low = i;原创 2011-10-30 14:42:45 · 634 阅读 · 0 评论 -
按条件输出行
用户需求: 有一个大文件,有很多行(lines = 10w?)。只有少数的行满足用户关注的条件,记为cond(line) (返回真表示满足条件,假表示不满足) 如果第 i 行满足条件,则第 i 行的前后 r 行也附加关注,作为第 i 行的参考(r = 10 ?) 输出所有的关注行(包括附加关注行) 如果计算了重叠的关注行,仅输出一次(即下一关注行的前 r 行和前一关注行的后 r 行原创 2013-11-09 11:05:32 · 703 阅读 · 0 评论 -
不用乘除法,循环,判断求1+2+...+n
#include using namespace std; // compute: 1+2+3+...+n // no use operator '*' and '/' // no use for while if switch // method: // 1+2+3+...+n = (n+1)*n/2 = (n*n+n)/2 // let n = b31b30..b0 // n = 2^原创 2013-10-12 21:06:05 · 1429 阅读 · 0 评论