★★★★★ 龙门乱弹 ★★★★★

▓木浮于水,而皓月当空▓ 关注Java程序设计▓Linux系统▓人工智能(AI)进展▓数学▓

  BlogJava :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  39 随笔 :: 2 文章 :: 170 评论 :: 0 Trackbacks
public String[] getAll(int[] array) {
        
int n = Array.getLength(array);
        
int total = (int) Math.pow(2, n);
        Logger log 
= Logger.getLogger("myLog");
        log.info(
" the  total :" + total);
        String[] outArray 
= new String[total];
        
for (int i = 0; i < total; i++) {
            StringBuffer bs 
= new StringBuffer("");
            
for (int j = 0; j < n; j++) {
                
if (((i >> j) % 2== 1) {
                    bs.append(String.valueOf(Array.
get(array, j)));
                }
            }
            outArray[i] 
= bs.toString();
        }
        
return outArray;
    }


以上代码把生成的子集存放到一个字符串数组中,当集合的基数很大时,需要很大内存, 可以根据需要把上面程序改改不要放到数组中,而是边生成边使用.


posted on 2005-09-13 11:07 LoveBNU 小六 WangBNU 阅读(805) 评论(0)  编辑  收藏 所属分类: Java编程算法之妙

只有注册用户登录后才能发表评论。


网站导航: