Xiangism

从一个无知角落里开始,蹒跚学步,一个未知到另一个未知,在跌跌撞撞中越走越快,越走越远,最后宇宙也为之开源。对于探索者来说,最后他们的思想总是变得和自己的足迹一样伟大。
  博客园  :: 首页  :: 联系 :: 管理

从数组中返回所有指定长度的子数组的另一种方法

Posted on 2009-09-15 21:54  Xiangism  阅读(567)  评论(0编辑  收藏  举报
前几天用递归的方法实现了——从数组中返回所有指定长度的子数组。
 
后来在看《编程之美》中的一篇文章——《求二进制数中1的个数》时想到另一种比较好的方法,就是用二进制数来实现。比如要从{1,2,3,4,5}中提取所有长度为2的数组(不考虑顺序),可以先用排列的知识算出子数组有多少个,比如这题C25=10个,然后再访问所有从0到9之间的数,当然是用二进制的形式来访问,如果这个二进制数中1的个数为2,那么就在原数组中按照这两个1的位置来取值,从来可以得到一个子数组。那么在遍历所有0到9之间的二进制数后,就可以得到所以满足条件的子数组。
 
这个方法实现起来比较简单,就不给出代码了。