全排列问题的JAVA代码

    xiaoxiao2021-03-25  80

    全排列问题可以促成实现很多问题,比如8皇后问题等

    递归实现全排列思想:以字符数组为例,第一个字符和后面每一个字符交换都可以作为全排列的一种,不妨让第一个字符和每个字符交换一次,但是这仅仅完成了第一步,以第二个字符出发和第一个字符出发原理一样,所以考虑递归解决递归过程就是这种交换的过程

    java代码实现如下:

    public class Test3 { public static void main(String[] args){   char[] charArray= {'a','b','c','\0'}; Test3 test3 = new Test3(); test3.permutation(charArray,0); } public void permutation(char[] string ,int beginStr) { if(string[beginStr] == '\0'){ System.out.println(string); }else{ for(int i = beginStr; string[i]!='\0';i++){ char temp = string[i]; string[i] = string[beginStr]; string[beginStr] = temp; permutation(string,beginStr+1); temp = string[i]; string[i] = string[beginStr]; string[beginStr] = temp; } } } }

    程序运行结果:

    abc acb bac bca cba cab

    debug运行过程有助于理解为什么是这样的输出顺序,递归本质是栈机制,运行入栈出栈过程繁琐,而且很多步都是浪费的

    转载请注明原文地址: https://ju.6miu.com/read-35032.html

    最新回复(0)