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

          輸出組合的一個非遞歸算法

          Posted on 2007-04-01 21:15 小強摩羯座 閱讀(485) 評論(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



          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 安仁县| 石城县| 徐闻县| 兴化市| 乐亭县| 天门市| 贡觉县| 磴口县| 玉溪市| 长寿区| 昂仁县| 兰州市| 南开区| 客服| 从江县| 墨脱县| 灵宝市| 大冶市| 张家港市| 周口市| 调兵山市| 都兰县| 甘泉县| 淄博市| 临潭县| 河南省| 文水县| 从化市| 阳泉市| 茶陵县| 饶阳县| 博罗县| 顺义区| 宜丰县| 墨脱县| 扎囊县| 绥中县| 德安县| 兴山县| 京山县| 余江县|