你好呀,我是灰小猿,一個超會寫bug的程式猿!
歡迎大家關注我的專欄“每日藍橋”,該專欄的主要作用是和大家分享近幾年藍橋杯省賽及決賽等真題,決議其中存在的演算法思想、資料結構等內容,幫助大家學習到更多的知識和技術!
標題:撲克序列
A A 2 2 3 3 4 4,一共四對撲克牌,請你把它們排成一行,
要求:兩個A中間有一張牌,兩個2之間有兩張牌,兩個3之間有三張牌,兩個4之間有四張牌,
請填寫出所有符合要求的排列中,字典序最小的那個,
例如:22AA3344比A2A23344字典序小,當然,它們都不是滿足要求的答案,
請通過瀏覽器提交答案,“A”一定不要用小寫字母a,也不要用“1”代替,字符間一定不要留空格,
解題思路:
本題在求解上主要還是考察了排列組合的思想,利用排列組合將8張撲克牌所有的可能結果全都列舉出來,然后判斷組合是否符合題目中所給的要求,在這里如果想要輸出最小的排列順序,那么是需要進行字串的大小的比較的,這里采用的方法是compareTo方法,
設a,b是兩個字串,則對a和b進行大小比較的方法是:
a.compareTo(b)
a==b 回傳0
a>b 回傳值大于0
a<b 回傳值小于0
答案原始碼:
package 一四年省賽真題; import java.util.ArrayList; import java.util.List; /**標題:撲克序列 A A 2 2 3 3 4 4,一共四對撲克牌,請你把它們排成一行, 要求:兩個A中間有一張牌,兩個2之間有兩張牌,兩個3之間有三張牌,兩個4之間有四張牌, 請填寫出所有符合要求的排列中,字典序最小的那個, 例如:22AA3344比A2A23344字典序小,當然,它們都不是滿足要求的答案, 請通過瀏覽器提交答案,“A”一定不要用小寫字母a,也不要用“1”代替,字符間一定不要留空格, */ public class Year2014_Bt7 { static String minString = "AA223344"; //定義最小的字串 public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("A"); list.add("A"); list.add("2"); list.add("2"); list.add("3"); list.add("3"); list.add("4"); list.add("4"); f(list,0); System.out.println(minString); } /** * 串列元素的全排列 * */ private static void f(List<String> list,int n) { if (n==list.size()) { if (check(list)) { String ansList = ""; for (String string : list) { ansList+=string; } //判斷當前的字串是否小于新組成的字串 /** * a.compareTo(b)方法 * a==b 回傳0 * a>b 回傳值大于0 * a<b 回傳值小于0 * */ if (minString.compareTo(ansList)>0) { minString=ansList; } } } for (int i = n; i < list.size(); i++) { String t = list.get(n); list.set(n, list.get(i)); list.set(i, t); //遞回確定下一個元素 f(list, n+1); //回溯,回傳原序列 t = list.get(n); list.set(n, list.get(i)); list.set(i, t); } } /** * 檢查組合是否符合要求 * */ private static boolean check(List<String> list) { if (list.lastIndexOf("A")-list.indexOf("A")==2 &&list.lastIndexOf("2")-list.indexOf("2")==3 &&list.lastIndexOf("3")-list.indexOf("3")==4 &&list.lastIndexOf("4")-list.indexOf("4")==5) { return true; } return false; } }
輸出樣例:
其中有不足或者改進的地方,還希望小伙伴留言提出,一起學習!
感興趣的小伙伴可以關注專欄!
灰小猿陪你一起進步!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/257448.html
標籤:java

