我试过了,全部循环输出可以实现,但是如果n大一点的话,系统n慢……循环操作啊,兄弟。在我机器上测试过了,超过8个数字的排列我的系统就会内存溢出,我可是256M的机器啊。
import java.util.*;public class MyClassCSDN {
public MyClassCSDN() {
}
public static void main(String[] args) {
try {
MyClassCSDN myClassCSDN = new MyClassCSDN();
int n = 5;//数值个数确定
String[] strs = new String[n];
int i = 0;
for(i=0;i<n;i++) {
strs[i] = Integer.toString(i+1);
}
//亦可自定n个其它数字,比如String[] str = {"12","22","2","3","12","213"};注意位数和n相等即可
int k = n;
ArrayList l=new ArrayList();
for(i=0;i<k;i++) {
l.add(strs[i]);
} ArrayList temp=myClassCSDN.N(l);
for (i=0;i<temp.size ();i++){
System.out.println((String)temp.get (i));
}
}
catch(Exception e) {
System.out.println(e);
}
}
public ArrayList N (ArrayList list){
ArrayList result=new ArrayList();
if ( list.size ()==1 ) return list;
else {
for ( int i=0;i<list.size ();i++){
String head=(String)list.get (i);
ArrayList templist=(ArrayList)list.clone ();
templist.remove (i);
ArrayList tempresult=N(templist);
if ( ! tempresult.isEmpty () ) {
for ( int k=0;k<tempresult.size ();k++){
result.add (head+" "+tempresult.get (k)) ;
}
}
}
}
return result;
}
}
//end
import java.util.*;public class MyClassCSDN {
public MyClassCSDN() {
}
public static void main(String[] args) {
try {
MyClassCSDN myClassCSDN = new MyClassCSDN();
int n = 5;//数值个数确定
String[] strs = new String[n];
int i = 0;
for(i=0;i<n;i++) {
strs[i] = Integer.toString(i+1);
}
//亦可自定n个其它数字,比如String[] str = {"12","22","2","3","12","213"};注意位数和n相等即可
int k = n;
ArrayList l=new ArrayList();
for(i=0;i<k;i++) {
l.add(strs[i]);
} ArrayList temp=myClassCSDN.N(l);
for (i=0;i<temp.size ();i++){
System.out.println((String)temp.get (i));
}
}
catch(Exception e) {
System.out.println(e);
}
}
public ArrayList N (ArrayList list){
ArrayList result=new ArrayList();
if ( list.size ()==1 ) return list;
else {
for ( int i=0;i<list.size ();i++){
String head=(String)list.get (i);
ArrayList templist=(ArrayList)list.clone ();
templist.remove (i);
ArrayList tempresult=N(templist);
if ( ! tempresult.isEmpty () ) {
for ( int k=0;k<tempresult.size ();k++){
result.add (head+" "+tempresult.get (k)) ;
}
}
}
}
return result;
}
}
//end
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货