permutation.java

来自「fortran并行计算包」· Java 代码 · 共 74 行

JAVA
74
字号
/* *  (C) 2001 by Argonne National Laboratory *      See COPYRIGHT in top-level directory. *//* *  @author  Anthony Chan */package logformat.slog2;import java.util.Enumeration;public class Permutation implements Enumeration{    private int    numLevels;    private int    numChildrenPerNode;    private long   enum_idx;    private long   enum_max;    private int[]  next_enum;    public Permutation( int Nlevels, int Nchilds )    {        numLevels           = Nlevels;        numChildrenPerNode  = Nchilds;        next_enum           = new int[ numLevels ];        for ( int idx = 0; idx < numLevels; idx++ )            next_enum[ idx ] = 0;        enum_max            = (long) Math.pow( (double) Nchilds,                                               (double) Nlevels );        enum_idx            = 0;    }    public boolean hasMoreElements()    {        return enum_idx < enum_max;    }    public Object nextElement()    {        int[] curr_enum = (int[]) next_enum.clone();        // Update next_enum        for ( int ilevel = 0; ilevel < numLevels; ilevel++ ) {            next_enum[ ilevel ]++;            if ( next_enum[ ilevel ] < numChildrenPerNode )                break;            else                next_enum[ ilevel ] = 0;        }        enum_idx++;        return curr_enum;    }    public static final void main( String[] args )    {        int Nlevels = Integer.parseInt( args[ 0 ] );        int Nchilds = Integer.parseInt( args[ 1 ] );        int[] icfg;        Enumeration perms = new Permutation( Nlevels, Nchilds );        while ( perms.hasMoreElements() ) {            icfg = (int[]) perms.nextElement();            for ( int idx = 0 ; idx < icfg.length; idx++ )                System.out.print( icfg[ idx ] + " " );            System.out.println();        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?