2 zkl99999 zkl99999 于 2015.07.03 13:37 提问

问一道排列组合题 一组数据 随机选四个数组成四元组,请问总共有多少个偶排列,

问一道排列组合题 一组数据 随机选四个数组成四元组,请问总共有多少个偶排列,数组例如(±1.6,±1,±0.6,0) 七选四

3个回答

strutce
strutce   Ds   Rxr 2015.07.03 16:01
已采纳

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();
}

}

tongyi55555
tongyi55555 这个版本的是正确的,上面一个版本少了一个大括号。另外根据奇偶排列性质,所有n个不同数的奇偶排列数都是n!的一半。
2 年多之前 回复
yuke198907
yuke198907   2015.07.03 13:41

可以问一下什么叫偶排列啊?

zkl99999
zkl99999 欧排列 偶置换 一样的
2 年多之前 回复
strutce
strutce   Ds   Rxr 2015.07.03 15:28

数组成四元组: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();
}

}

Csdn user default icon
上传中...
上传图片
插入图片