07 2013 档案

摘要:问题:输入一个序列(元素无重复),输出其全排列一般采用经典的递归解法,后来想将其改造为非递归代码,思考很久后觉得并不好写,手工模拟递归栈的行为容易出错。然后上网搜索了一下众网友的非递归代码,发现很多人的非递归代码是各种全新的求解算法,而不是相同算法的非递归实现,和我想要的不一样。递归解法:假设输入序列[0,1,2,3],将其分解为4个子问题0+[1,2,3],1+[0,2,3],2+[0,1,3],3+[0,1,2],这样每个子问题的规模减小了1,一直递归下去直到无法再分解。 1 //对a[idx]~a[n-1]的元素进行全排列,原地排列 2 //第一个参数为序列集合,第二个为序列长度,第三个 阅读全文
posted @ 2013-07-30 20:34 _pop 阅读(927) 评论(0) 推荐(0)
摘要:读《深入理解计算机系统》第二章 信息的表示与处理利用异或实现变量交换(习题2.10),使用以下函数时需注意的地方是不要让2个入参指向同一个地址,会返回0(习题2.11);1 void swap(int *x,int *y)2 {3 *y = *x^*y;4 *x = *x^*y;5 *y = *x^*y;6 } 阅读全文
posted @ 2013-07-20 16:48 _pop 阅读(186) 评论(0) 推荐(0)