题目:
对于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);
}
}