问一道排列组合题 一组数据 随机选四个数组成四元组,请问总共有多少个偶排列,数组例如(±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();
}
}
可以问一下什么叫偶排列啊?
数组成四元组:2401-------偶排列数:1372
程序
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();
}
}