在JAVA中 ABCD的自由组合排列有几种,并打印出来 用递归的算法,求ABCD自由组合后有几种组合结果,各位哥哥,姐姐有想法吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int 排列方法(string){ if(null == string || 0 == string.length()) return 0; while(string的长度>1) { return 排列方法(string.substring(1)) *2; } //length = 1 return 1;} 不好意思,我没说明白,是组合方式的结果比如 ABCD 四个的组合方式打印出来,ACBD,ABDC,DBAC...用递归打印出来. 请看看这个是不是 你要的结果是:0--ABCD . 1--ABDC . 2--ACBD . 3--ACDB . 4--ADBC . 5--ADCB . 6--BACD . 7--BADC . 8--BCAD . 9--BCDA . 10--BDAC . 11--BDCA . 12--CABD . 13--CADB . 14--CBAD . 15--CBDA . 16--CDAB . 17--CDBA . 18--DABC . 19--DACB . 20--DBAC . 21--DBCA . 22--DCAB . 23--DCBA . 代码是:import java.util.*;public class TestABCD { Vector all=new Vector(); String strA = null; String strB = null; String results = null; String passThen=null; public void getABCD(String wawa,String passBefore) { for (int i = 0; i < wawa.length(); i++) { strA = wawa.charAt(i) + "";//第一i个字母 strB = wawa.replaceFirst(strA, "");//去掉后剩下的字母 passThen=passBefore+strA;//将要向下一个节点传的字符串 if (wawa.length()>2) { getABCD(strB,passThen); }else if(wawa.length()==2){ results=passThen+strB;//得到结果 all.add(results);//放入集合 } } } public void see(){//查看结果 for(int i=0;i<all.size();i++){ String result=(String)all.elementAt(i); System.out.println(" "+result+" ----------"+i); } } public static void main(String[] args) { TestABCD t = new TestABCD(); t.getABCD("ABCD",""); t.see();//查看结果 }} 数据库 为什么java中的方法不能写在main()里面 请教,这个方法一般是什么情况会导致出现这种异常 在JAVA 中 用2维数组打印出螺旋数组 cmd中怎样运行.java文件 setAccessible()方法是否破坏了Java的访问规则呢? 线程疑问 请教,关键字:MSSQL 存储过程 多数据集 可滚动。 【醒目】高分请教 生成 坐标的算法.[不够加分] ^___^ 初学java的话,从何入手呢?vj++,还是jbuilder? 什么是桩代码? 关于如何实现一个时钟动画的问题?
{
if(null == string || 0 == string.length()) return 0;
while(string的长度>1)
{
return 排列方法(string.substring(1)) *2;
}
//length = 1
return 1;
}
结果是:0--ABCD . 1--ABDC . 2--ACBD . 3--ACDB . 4--ADBC . 5--ADCB . 6--BACD . 7--BADC . 8--BCAD . 9--BCDA . 10--BDAC . 11--BDCA . 12--CABD . 13--CADB . 14--CBAD . 15--CBDA . 16--CDAB . 17--CDBA . 18--DABC . 19--DACB . 20--DBAC . 21--DBCA . 22--DCAB . 23--DCBA .
代码是:import java.util.*;public class TestABCD {
Vector all=new Vector();
String strA = null;
String strB = null;
String results = null;
String passThen=null;
public void getABCD(String wawa,String passBefore) {
for (int i = 0; i < wawa.length(); i++) { strA = wawa.charAt(i) + "";//第一i个字母
strB = wawa.replaceFirst(strA, "");//去掉后剩下的字母
passThen=passBefore+strA;//将要向下一个节点传的字符串
if (wawa.length()>2) {
getABCD(strB,passThen);
}else if(wawa.length()==2){
results=passThen+strB;//得到结果
all.add(results);//放入集合
}
}
}
public void see(){//查看结果
for(int i=0;i<all.size();i++){
String result=(String)all.elementAt(i);
System.out.println(" "+result+" ----------"+i);
}
}
public static void main(String[] args) {
TestABCD t = new TestABCD();
t.getABCD("ABCD","");
t.see();//查看结果
}
}