import java.util.*; /** * 給定參數n,從1到n會有n個整數1,2,3,...,n這n個數組共有n!種排列,按照大小順序升序排列出所有列的情況,並一一標記, *給定n和k返回第k個值, */ public class Main { public static void cal(char data[], int k, List<String> list) { if (k == data.length) { String s = ""; for (int i = 0; i < data.length; i++) { s += data[i]+""; } list.add(s); } for (int i = k; i < data.length; i++) { { char temp = data[k]; data[k] = data[i]; data[i] = temp; } cal(data, k + 1,list); { char temp = data[k]; data[k] = data[i]; data[i] = temp; } } } public static void main(String[] args) { Scanner scan = new Scanner(System.in); int s = scan.nextInt(); int k = scan.nextInt(); int [] a = new int[s]; char [] af = new char[s]; for (int i=0; i<s;i++) { a[i] = i+1; } String num=""; for( int i = 0; i < a.length; i++ ){ num += a[i]+""; } af = num.toCharArray(); List<String> list = new ArrayList<>(); cal(af, 0,list); System.out.println(list.get(k-1)); } }
【每天一道算法題】給定參數n,從1到n會有n個整數1,2,3,...,n這n個數組共有n!種排列,按照大小順序升序排列出所有列的情況,並一一標記,給定n和k返回第k個值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.