package testWork;</p><p>/**<br /> *<br /> * 用1、2、2、3、4、5這六個數字,用java寫一個程式,列印出所有不同的排列<br /> * 如:512234、412345等,要求:"4"不能在第三位,"3"與"5"不能相連。<br /> *<br /> * @author user<br /> * @version [版本號碼, Jun 29, 2011]<br /> * @see [相關類/方法]<br /> * @since [產品/模組版本]<br /> */<br />public class Test1<br />{<br /> private int[] numbers = new int[] {1, 2, 3, 3, 4, 5};</p><p> public int n;</p><p> private String lastResult = "";</p><p> private boolean validate(String s)<br /> {<br /> if (s.compareTo(lastResult) <= 0) //按字典順序比較兩個字串。<br /> {<br /> return false;<br /> }<br /> if (s.charAt(2) == '4')//"4"不能在第三位<br /> {<br /> return false;<br /> }<br /> if (s.indexOf("35") >= 0 || s.indexOf("53") >= 0)//"3"與"5"不能相連<br /> {<br /> return false;<br /> }<br /> return true;<br /> }<br /> /**<br /> * <一句話功能簡述><br /> * <功能詳細描述><br /> * @param index<br /> * @param result [參數說明]<br /> *<br /> * @return void [傳回型別說明]<br /> * @exception throws [違例類型] [違例說明]<br /> * @see [類、類#方法、類#成員]<br /> */<br /> public void list(String index, String result)<br /> {<br /> for (int i = 0; i < numbers.length; i++)<br /> {<br /> if (index.indexOf(i+48) < 0)<br /> {<br /> String s = result + String.valueOf(numbers[i]);<br /> if (s.length() == numbers.length)<br /> {<br /> if (validate(s))<br /> {<br /> System.out.println(s);<br /> lastResult = s;<br /> n++;<br /> }<br /> break;<br /> }<br /> list(index + String.valueOf(i), s);<br /> }<br /> }<br /> }<br /> /**<br /> * 主程式入口<br /> * <功能詳細描述><br /> * @param args [參數說明]<br /> *<br /> * @return void [傳回型別說明]<br /> * @exception throws [違例類型] [違例說明]<br /> * @see [類、類#方法、類#成員]<br /> */<br /> public static void main(String[] args)<br /> {<br /> Test1 t = new Test1();<br /> t.list("", "");<br /> System.out.println("總數:" + t.n);<br /> }<br />}<br />