package test;
import org.junit.Test;
//排序组合算法
public class PermutationAlgo {
private int count = 0;
@Test
public void calculate(){
String eleStr = "122345";
depthSearch(eleStr, "");
System.out.println("符合条件的总结果数为:"+count+"条");
}
public void depthSearch(String eleStr, String rstStr) {
if (eleStr.length() == 0) {
count++;
System.out.println(rstStr);
return;
}
for (int i = 0; i < eleStr.length(); i++) {
String currEle = eleStr.substring(i, i + 1); //取出当前位的值
if (rstStr.length() == 2 && "4".equals(currEle)) continue; //剪掉第三位为4的分支
if (rstStr.endsWith("3") && "5".equals(currEle)) continue; //剪掉"35"相连的分支
if (rstStr.endsWith("5") && "3".equals(currEle)) continue; //剪掉"53"相连的分支
if (eleStr.substring(0, i).indexOf(currEle) != -1) continue; //剪掉同一位上字符重复的分支(此题即剪掉重复的2)
depthSearch(eleStr.substring(0, i) + eleStr.substring(i + 1), rstStr + currEle); //用剩余的合法串继续递归
}
}
}
1、2、3、4、5、6打印出不同的排列,4不在第三位3、5不相邻
最新推荐文章于 2021-03-27 08:37:19 发布