一个排列问题 从1~12中选出6个数字排列,如2 3 8 5 12 6,用java怎样实现列举出所有的排列?有朋友说用hash map,但是有没有更便捷更灵活的方法?比如说可以任选数字的个数,求指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package exec.basic;public class Paixu { public static void main(String[] args) throws Exception { char[] para = {1,2,3,4,5,6,7,8,9}; for(int i=0;i<para.length;i++) para[i]+=48; paixu(para,para.length,0); } private static void paixu(char[] array, int n, int k) { if (n == k) { char[] out = new char[n]; for (int i = 0; i < array.length; i++) { out[i] = array[i]; } System.out.println(new String(out)); } else { for (int i = k; i < n; i++) { swap(array, k, i); paixu(array, n, k + 1); swap(array, i, k); } } } private static void swap(char[] a, int x, int y) { char temp = a[x]; a[x] = a[y]; a[y] = temp; }} 这里是我之前写的排列组合工具类:http://blog.csdn.net/raistlic/article/details/7844812前面有用法的代码示例,后面有源代码。 重复运行同一个java程序,需要复制多份程序到不同文件夹吗? 关于当前界面锁定的问题,向大虾们求助 谢谢~~~ Exception in thread "main" java.lang.OutOfMemoryError: Java heap space,怎么办 [分享]我写的23种设计模式读书笔记 jframe 中界面最小化后图形消失的问题 编译出来找不到符号 是什么问题 ip校验问题? JList问题 请教:如何终止(退出)这段(阻塞)代码的执行 如何区分数据是英文还是中文? 请教 hashmap 转 set 的一个问题。 java JavaScript
public static void main(String[] args) throws Exception {
char[] para = {1,2,3,4,5,6,7,8,9};
for(int i=0;i<para.length;i++)
para[i]+=48;
paixu(para,para.length,0);
}
private static void paixu(char[] array, int n, int k) {
if (n == k) {
char[] out = new char[n];
for (int i = 0; i < array.length; i++) {
out[i] = array[i];
}
System.out.println(new String(out));
} else {
for (int i = k; i < n; i++) {
swap(array, k, i);
paixu(array, n, k + 1);
swap(array, i, k);
}
}
}
private static void swap(char[] a, int x, int y) {
char temp = a[x];
a[x] = a[y];
a[y] = temp;
}}