您的位置:首页 > 其它

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

2013-05-14 13:38 176 查看
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);
 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐