置换代码而不重复

时间:2016-11-01 22:13:10

标签: java permutation

我有一个带排列的代码,当我运行这段代码时,它返回多个具有相同值的结果 我想不要返回相同的结果,以打破重复。

这是我的代码:

public class Teste {

    private static final char[] MP = new char[] {'i', 't', '@', 'r', 'm', 't', 'z', 'c', 'r', '.', 'c', 'a', 'a', 't', 't', 'c', 'b', 'a', 'i', '.', 'o'};

    private static final int[][] SWAPS = new int[][] {
        {2, 8, 18, 4, 0, 15, 1, 11, 3, 14, 20, 5, 19, 16, 13, 6, 12, 10, 17, 9, 7},
        {15, 8, 6, 2, 17, 14, 4, 9, 0, 5, 13, 7, 3, 19, 10, 18, 20, 11, 16, 12, 1},
        {0, 17, 20, 7, 6, 3, 14, 2, 18, 15, 19, 8, 16, 1, 5, 9, 13, 12, 11, 4, 10},
        {12, 11, 15, 14, 10, 4, 0, 19, 13, 17, 3, 9, 20, 6, 8, 16, 1, 7, 5, 18, 2}
    };

    public static void main(String[] args) {
        char[] str =  MP;
        int[][] out ;
        Teste p = new Teste() ;

        while (p.SWAPS != null) {
            out = p.SWAPS;

            for ( char e : MP ) {
                System.out.print(e + " - ") ;
            }
            System.out.println() ;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码似乎根本不使用SWAPS数组。

您的意思是以某种方式使用SWAPS数组来决定要打印哪个MP的索引?

另外,你有一个while循环来检查p.SWAPS的值。但是,这个值永远不会在循环中发生变化,因此您将获得无限循环。

如果要从MP数组中选择一个随机字符,可以使用java.util.Random类。

我在上面看到了您的说明,您指定了如何找到MP阵列中第一个字符的位置(8)。如何找到MP阵列中其余字符的位置。如果每次从0,0开始,则所有字符都将以第8个索引结束。