問一道排列組合題 一組數據 隨機選四個數組成四元組,請問總共有多少個偶排列,數組例如(±1.6,±1,±0.6,0) 七選四
840-------偶排列數:420
程序
public class test {
static void f(double[] a,int n,String v){
if(n==a.length){
System.out.println(v);
}else{
f(a,n+1,v+","+a[n]);
}
}
static int nxs(double[] arr1){
int a=0;
for (int i = 0; i < arr1.length; i++) {
for (int j = i+1; j < arr1.length-1; j++) {
if(arr1[i]>arr1[j]){
a+=1;
}
}
}
return a;
}
static void printf(){
double[] arr = { 1.6, 1, 0.6, 0, -0.6, -1, -1.6 };
int a=0;
int b=0;
for(int i=0;i<7;i++){
for(int j=0;j<7;j++){
for(int m=0;m<7;m++){
for(int n=0;n<7;n++){
if(i!=j && i!=m && i!=n && j!=m && j!=n && m!=n){
System.out.printf(arr[i]+"---"+arr[j]+"---"+arr[m]+"---"+arr[n]+"---"+"\n"+i+"---"+j+"---"+m+"---"+n+"---"+"\n");
++a;
double[] arr1=new double[4];
arr1[0]=arr[i];
arr1[1]=arr[j];
arr1[2]=arr[m];
arr1[3]=arr[n];
int nxs=nxs(arr1);
if(nxs%2==0){
++b;
}
}
}
}
}
}
System.out.println(a+"-------"+"偶排列數:"+b);
}
public static void main(String[] args) {
printf();
}
}