用回溯法生成1,2,.....,n 的所有排列那位大哥好心帮我解决一下
谢谢啦!!!

解决方案 »

  1.   

    public class TestArrange {

    private int[] result = null;
    private int number;

    public TestArrange(int number) {
    this.number = number;
    result = new int[number];
    }

    public void arrange(int step) {

    if(step == number) {
    printresult();
    }
    else {
    for(int point = 0; point < number; point ++) {
    if( hasarranged(point, step) == false) {
    result[step] = point;
    arrange(step +1);
    }
    }
    }

    }

    private void printresult() {
    for(int i =0; i<number; i++) {
    System.out.print(result[i] + " ");
    }
    System.out.println();
    }

    private boolean hasarranged(int point, int step) {
    boolean res = false;
    for(int i=0; i<step; i++) {
    if( result[i] == point) {
    res = true;
    break;
    }
    }
    return res;
    }

    public static void main(String[] args) {
    TestArrange ta = new TestArrange(5);
    ta.arrange(0);
    }
    }