package JavaSf;
/** * 用1、2、2、3、4、5这六个数字, * 用java写一个main函数,打印出所有不同的排列, * 如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连. */import java.util.Iterator;import java.util.LinkedList;
public class Test { private LinkedList list = new LinkedList(); /** * 进行排列 */ private void PaiLie(String startStr, String str) { if (str.length() > 1) { for (int i = 0; i < str.length(); i++) { for (int j = i + 1; j < str.length(); j++) { char[] ch = str.toCharArray(); char temp = ch[i]; ch[i] = ch[j]; ch[j] = temp; String startStr1 = startStr + String.valueOf(ch[0]); String s = (new String(ch)).substring(1, (new String(ch)).length()); if ((!list.contains(startStr1 + s)) && isRight(startStr1 + s)) list.add(startStr1 + s); PaiLie(startStr1, s); } } } } /** * 判断要求 */ private boolean isRight(String s) { if (s.charAt(2) == '4') { return false; } if (s.indexOf("35") != -1 || s.indexOf("53") != -1) { return false; } return true; } /** * 打印 */ private void display() { Iterator it = list.listIterator(); while (it.hasNext()) { System.out.println(it.next().toString()); } }
public static void main(String[] args) { if (args.length > 1) { System.out.println("输入的参数不符合要求"); } else if (args[0].trim().length() < 3) { System.out.println("输入的参数不符合要求"); } else { Test test = new Test(); test.PaiLie("",args[0].trim()); test.display(); } }}