从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);
}
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);
}
相关文章推荐
- 网新国际2008春季招聘笔试题 打印电话号码所对应的字符的所有可能组合
- 请用Java实现一个算法:由a-z、0-9组成3位的字符密码,并打印所有可能的密码组合。
- Java练习题-输入一个字符串,输出该字符串中字符的所有组合(二)
- 字符串中字符的所有组合(组合中的先后顺序不考虑)
- 【编程题】输入一个字符串,输出该字符串中相邻字符的所有组合。
- 有一个纯字符串,编写一段代码,列出其所有字符的大小写组合 如 :字符串“ji”,字母组合['ji','jI','Ji','JI'] 即每个字符的大小写组合
- MATLAB选出一个数组里n个元素的所有组合
- 求字符的所有组合!
- 显示字符串中所有字符的排列组合。
- [剑指offer]求字符的所有组合
- 组合问题(从M个不同字符中任取N个字符的所有组合)
- 获取字符串中所有字符组合的子串
- 输出该字符串中字符的所有组合
- 针对如"123456"之类的任意字符序列,输出它们所有的排列组合
- 字符串中字符的所有组合(递归方式)
- 题目描述:给定一个字符串,求出其所有可能的字符组合. 比如:abc 其所有组合是:a,b,c,ab,ac,bc,abc
- 输出该字符串中字符的所有组合
- 递归列举从数组b()中选出某些元素(允许重复)使其和等于num的所有组合
- 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如: 原始字符串是"abc",打印得到下列所有组合情况
- 输入一个字符串,输出该字符串中字符的所有组合 C#【总结】