`
zyn010101
  • 浏览: 319772 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从m个字符选出n个的所有组合

阅读更多

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Zuhe {
 //全局变量,存储所有字符组合
 List<Object> list = new ArrayList<Object>();

 public void getNext(String begin, String[] s, int num) {
  if (num > 1) {
   for (int i = 0; i < s.length - num+1; i++) {
    //取出一个字符
    String str = s[i];
    //数组后边的元素组成新数组
    String[] newS = Arrays.copyOfRange(s, i + 1, s.length);
    //递归,从后面的n-1个数种选出num-1个
    getNext(begin == null ? str : (begin + "-" + str), newS,num - 1);
   }
  } else {
   //如果从剩下的s中选出1个数,那么前缀依次和s中的所有元素组合一次
   for (int b = 0; b < s.length; b++) {
    list.add(begin + "-" + s[b]);
   }

  }

 }

 /**
  * @param args
  *            Administrator 2013-4-23 下午2:15:43
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  String[] str = { "a", "b", "c", "d", "e", "f", };
  Zuhe z = new Zuhe();
  z.getNext(null, str, 3);
  System.out.println(z.list);
 }

0
5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics