posts - 195, comments - 34, trackbacks - 0, articles - 1

输出组合的一个非递归算法

Posted on 2007-04-01 21:15 小强摩羯座 阅读(483) 评论(0)  编辑  收藏

算法利用了从1到pow(2,n)-1的所有整数的二进制表示中1的位置组合刚好是所要取的所有组合的性质。  

 1static void combin(char []list)
 2    {
 3        int count = (int)Math.pow(2, list.length)-1 ;
 4        int [] b = new int[list.length];
 5        for(int i = 1; i <= count;i++)
 6        {
 7            
 8            for(int j =0 ;j < list.length;j++)
 9            {
10                b[j] = (i>>j) & 1;    
11            }

12            for(int k = 0;k < list.length;k++)
13            {
14                if(b[k] == 1)
15                    System.out.print(list[k]);
16            }

17        //    if(i < count) System.out.print(", ");
18            System.out.println();
19        }

20    }
一个输出结果是,如此调用
char []str={'1''2''3''4'};
  
  combin(str);
结果如下:
1
2
12
3
13
23
123
4
14
24
124
34
134
234
1234



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


网站导航: