全排列应用

xiaoxiao2021-02-28  102

题目: 对于1到n的一个全排列,可以根据中间的大小关系插入合适的大于小于符号即‘>’和‘<’, 使其成为一个合法的不等式数列, 但是只有k个小于号和n-k-1个大于号,请问1-n的任意排列情况中总共有多少种排列可以实现合法不等式数列? 例:n=3,k=1 输出为4: 1<3>2,  3>1<2,  2>1<3,    2<3>1

public class FullPermutation { static int num = 0; static boolean check(int[] an,int n,int k) { int less = 0; for (int i = 0;i<n-1;i++) { if(an[i]<an[i+1])less++; } if (less==k)return true; else return false; } static void Permutation(int[] an,int k,int start,int end) { if(start==end) { for(int i=0;i<=end;i++) { System.out.print(an[i]); } System.out.println(""); if(check(an,end+1,k)) num++; } else { for(int cur=start;cur<=end;cur++) { int temp = an[cur]; an[cur] = an[start]; an[start] = temp; Permutation(an,k,start+1,end); temp = an[cur]; an[cur] = an[start]; an[start] = temp; } } } public static void main(String[] args) { // TODO Auto-generated method stub int n = 3; int[] an = new int[3]; for(int i = 0;i<n;i++) { an[i] = i+1; } Permutation(an,1,0,n-1); System.out.print(num); } }
转载请注明原文地址: https://www.6miu.com/read-30869.html

最新回复(0)